From cd63e31487544c406976780ecaf33ec2ef6cc6a1 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Mon, 20 Jul 2026 10:54:14 -0600 Subject: [PATCH] =?UTF-8?q?feat(phase-29=20crack-wave3):=20func=5F801588CC?= =?UTF-8?q?=20jtbl=20family=20bank=20138/138=20(=C2=A78=20jtbl=5Fcarve=20+?= =?UTF-8?q?=20jr=5Fisolate)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/overlays.mk | 276 +-- config/splat.ov_SC01_000.yaml | 21 +- config/splat.ov_SC01_001.yaml | 21 +- config/splat.ov_SC01_004.yaml | 21 +- config/splat.ov_SC01_005.yaml | 21 +- config/splat.ov_SC01_006.yaml | 21 +- config/splat.ov_SC01_008.yaml | 21 +- config/splat.ov_SC01_009.yaml | 21 +- config/splat.ov_SC01_074.yaml | 21 +- config/splat.ov_SC01_077.yaml | 21 +- config/splat.ov_SC01_080.yaml | 19 +- config/splat.ov_SC01_084.yaml | 21 +- config/splat.ov_SC02_000.yaml | 21 +- config/splat.ov_SC02_003.yaml | 21 +- config/splat.ov_SC02_004.yaml | 19 +- config/splat.ov_SC02_005.yaml | 19 +- config/splat.ov_SC02_011.yaml | 19 +- config/splat.ov_SC02_015.yaml | 19 +- config/splat.ov_SC02_016.yaml | 21 +- config/splat.ov_SC02_017.yaml | 21 +- config/splat.ov_SC02_021.yaml | 21 +- config/splat.ov_SC02_026.yaml | 21 +- config/splat.ov_SC02_027.yaml | 21 +- config/splat.ov_SC02_028.yaml | 21 +- config/splat.ov_SC02_031.yaml | 19 +- config/splat.ov_SC02_035.yaml | 21 +- config/splat.ov_SC02_039.yaml | 21 +- config/splat.ov_SC02_041.yaml | 21 +- config/splat.ov_SC03_001.yaml | 19 +- config/splat.ov_SC03_002.yaml | 21 +- config/splat.ov_SC03_003.yaml | 19 +- config/splat.ov_SC03_006.yaml | 19 +- config/splat.ov_SC03_007.yaml | 19 +- config/splat.ov_SC03_010.yaml | 19 +- config/splat.ov_SC03_011.yaml | 21 +- config/splat.ov_SC03_012.yaml | 19 +- config/splat.ov_SC03_013.yaml | 19 +- config/splat.ov_SC03_014.yaml | 21 +- config/splat.ov_SC03_015.yaml | 21 +- config/splat.ov_SC03_023.yaml | 19 +- config/splat.ov_SC03_024.yaml | 21 +- config/splat.ov_SC03_028.yaml | 19 +- config/splat.ov_SC03_029.yaml | 21 +- config/splat.ov_SC03_030.yaml | 19 +- config/splat.ov_SC03_031.yaml | 21 +- config/splat.ov_SC03_089.yaml | 21 +- config/splat.ov_SC03_090.yaml | 21 +- config/splat.ov_SC03_091.yaml | 21 +- config/splat.ov_SC03_092.yaml | 19 +- config/splat.ov_SC03_093.yaml | 21 +- config/splat.ov_SC03_094.yaml | 21 +- config/splat.ov_SC03_095.yaml | 21 +- config/splat.ov_SC03_096.yaml | 21 +- config/splat.ov_SC03_097.yaml | 21 +- config/splat.ov_SC03_098.yaml | 21 +- config/splat.ov_SC03_099.yaml | 21 +- config/splat.ov_SC03_100.yaml | 21 +- config/splat.ov_SC03_101.yaml | 21 +- config/splat.ov_SC03_102.yaml | 21 +- config/splat.ov_SC03_103.yaml | 21 +- config/splat.ov_SC03_104.yaml | 21 +- config/splat.ov_SC03_105.yaml | 21 +- config/splat.ov_SC03_108.yaml | 21 +- config/splat.ov_SC03_109.yaml | 21 +- config/splat.ov_SC03_110.yaml | 21 +- config/splat.ov_SC03_111.yaml | 21 +- config/splat.ov_SC03_112.yaml | 21 +- config/splat.ov_SC03_113.yaml | 21 +- config/splat.ov_SC03_114.yaml | 21 +- config/splat.ov_SC03_115.yaml | 21 +- config/splat.ov_SC03_116.yaml | 19 +- config/splat.ov_SC03_117.yaml | 21 +- config/splat.ov_SC03_118.yaml | 21 +- config/splat.ov_SC03_119.yaml | 21 +- config/splat.ov_SC03_121.yaml | 21 +- config/splat.ov_SC03_124.yaml | 19 +- config/splat.ov_SC03_125.yaml | 21 +- config/splat.ov_SC03_126.yaml | 21 +- config/splat.ov_SC04_000.yaml | 21 +- config/splat.ov_SC04_002.yaml | 21 +- config/splat.ov_SC04_003.yaml | 21 +- config/splat.ov_SC04_004.yaml | 19 +- config/splat.ov_SC04_005.yaml | 21 +- config/splat.ov_SC04_006.yaml | 21 +- config/splat.ov_SC04_007.yaml | 21 +- config/splat.ov_SC04_008.yaml | 17 +- config/splat.ov_SC04_009.yaml | 21 +- config/splat.ov_SC04_010.yaml | 21 +- config/splat.ov_SC04_011.yaml | 21 +- config/splat.ov_SC04_012.yaml | 19 +- config/splat.ov_SC04_015.yaml | 19 +- config/splat.ov_SC04_016.yaml | 21 +- config/splat.ov_SC04_018.yaml | 19 +- config/splat.ov_SC04_019.yaml | 19 +- config/splat.ov_SC04_020.yaml | 21 +- config/splat.ov_SC04_021.yaml | 21 +- config/splat.ov_SC05_000.yaml | 21 +- config/splat.ov_SC05_001.yaml | 21 +- config/splat.ov_SC05_002.yaml | 21 +- config/splat.ov_SC05_003.yaml | 21 +- config/splat.ov_SC05_004.yaml | 21 +- config/splat.ov_SC05_005.yaml | 21 +- config/splat.ov_SC05_006.yaml | 21 +- config/splat.ov_SC05_007.yaml | 21 +- config/splat.ov_SC05_008.yaml | 19 +- config/splat.ov_SC05_009.yaml | 19 +- config/splat.ov_SC05_010.yaml | 21 +- config/splat.ov_SC05_011.yaml | 21 +- config/splat.ov_SC05_017.yaml | 19 +- config/splat.ov_SC05_018.yaml | 21 +- config/splat.ov_SC05_019.yaml | 21 +- config/splat.ov_SC06_000.yaml | 19 +- config/splat.ov_SC06_006.yaml | 21 +- config/splat.ov_SC06_008.yaml | 21 +- config/splat.ov_SC06_010.yaml | 19 +- config/splat.ov_SC06_011.yaml | 21 +- config/splat.ov_SC06_013.yaml | 21 +- config/splat.ov_SC06_014.yaml | 21 +- config/splat.ov_SC06_015.yaml | 21 +- config/splat.ov_SC06_016.yaml | 21 +- config/splat.ov_SC06_018.yaml | 21 +- config/splat.ov_SC06_020.yaml | 21 +- config/splat.ov_SC06_022.yaml | 21 +- config/splat.ov_SC06_024.yaml | 21 +- config/splat.ov_SC06_025.yaml | 21 +- config/splat.ov_SC06_027.yaml | 21 +- config/splat.ov_SC06_029.yaml | 19 +- config/splat.ov_SC06_030.yaml | 21 +- config/splat.ov_SC06_032.yaml | 21 +- config/splat.ov_SC06_033.yaml | 21 +- config/splat.ov_SC07_000.yaml | 21 +- config/splat.ov_SC07_001.yaml | 21 +- config/splat.ov_SC07_002.yaml | 21 +- config/splat.ov_SC07_006.yaml | 7 +- config/splat.ov_SC07_007.yaml | 7 +- config/splat.ov_SC07_008.yaml | 21 +- config/splat.ov_SC07_009.yaml | 19 +- config/splat.ov_SC07_010.yaml | 5 +- config/splat.ov_SC07_011.yaml | 7 +- src/ov_SC01_000/ov_SC01_000_jr_80154C24.c | 339 --- src/ov_SC01_000/ov_SC01_000_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC01_001/ov_SC01_001_jr_80154C24.c | 339 --- src/ov_SC01_001/ov_SC01_001_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC01_004/ov_SC01_004_jr_80154C24.c | 339 --- src/ov_SC01_004/ov_SC01_004_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC01_005/ov_SC01_005_jr_80154C24.c | 339 --- src/ov_SC01_005/ov_SC01_005_jr_801588CC.c | 1537 ++++++++++++ src/ov_SC01_006/ov_SC01_006_jr_80154C24.c | 339 --- src/ov_SC01_006/ov_SC01_006_jr_801588CC.c | 1537 ++++++++++++ src/ov_SC01_008/ov_SC01_008_jr_80154C24.c | 339 --- src/ov_SC01_008/ov_SC01_008_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC01_009/ov_SC01_009_jr_80154C24.c | 339 --- src/ov_SC01_009/ov_SC01_009_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC01_074/ov_SC01_074_jr_80154C24.c | 339 --- src/ov_SC01_074/ov_SC01_074_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC01_077/ov_SC01_077_jr_80154C24.c | 340 --- src/ov_SC01_077/ov_SC01_077_jr_801588CC.c | 1586 ++++++++++++ src/ov_SC01_080/ov_SC01_080_jr_80154C24.c | 339 --- src/ov_SC01_080/ov_SC01_080_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC01_084/ov_SC01_084_jr_80154C24.c | 339 --- src/ov_SC01_084/ov_SC01_084_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_000/ov_SC02_000_jr_80154C24.c | 339 --- src/ov_SC02_000/ov_SC02_000_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_003/ov_SC02_003_jr_80154C24.c | 339 --- src/ov_SC02_003/ov_SC02_003_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_004/ov_SC02_004_jr_80154C24.c | 339 --- src/ov_SC02_004/ov_SC02_004_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_005/ov_SC02_005_jr_80154C24.c | 339 --- src/ov_SC02_005/ov_SC02_005_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_011/ov_SC02_011_jr_80154C24.c | 339 --- src/ov_SC02_011/ov_SC02_011_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_015/ov_SC02_015_jr_80154C24.c | 339 --- src/ov_SC02_015/ov_SC02_015_jr_801588CC.c | 1534 ++++++++++++ src/ov_SC02_016/ov_SC02_016_jr_80154C24.c | 339 --- src/ov_SC02_016/ov_SC02_016_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_017/ov_SC02_017_jr_80154C24.c | 339 --- src/ov_SC02_017/ov_SC02_017_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_021/ov_SC02_021_jr_80154C24.c | 339 --- src/ov_SC02_021/ov_SC02_021_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_026/ov_SC02_026_jr_80154C24.c | 339 --- src/ov_SC02_026/ov_SC02_026_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_027/ov_SC02_027_jr_80154C24.c | 339 --- src/ov_SC02_027/ov_SC02_027_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_028/ov_SC02_028_jr_80154C24.c | 339 --- src/ov_SC02_028/ov_SC02_028_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_031/ov_SC02_031_jr_80154C24.c | 339 --- src/ov_SC02_031/ov_SC02_031_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_035/ov_SC02_035_jr_80154C24.c | 339 --- src/ov_SC02_035/ov_SC02_035_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_039/ov_SC02_039_jr_80154C24.c | 339 --- src/ov_SC02_039/ov_SC02_039_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC02_041/ov_SC02_041_jr_80154C24.c | 339 --- src/ov_SC02_041/ov_SC02_041_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_001/ov_SC03_001_jr_80154C24.c | 339 --- src/ov_SC03_001/ov_SC03_001_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_002/ov_SC03_002_jr_80154C24.c | 339 --- src/ov_SC03_002/ov_SC03_002_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_003/ov_SC03_003_jr_80154C24.c | 339 --- src/ov_SC03_003/ov_SC03_003_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_006/ov_SC03_006_jr_80154C24.c | 339 --- src/ov_SC03_006/ov_SC03_006_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_007/ov_SC03_007_jr_80154C24.c | 339 --- src/ov_SC03_007/ov_SC03_007_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_010/ov_SC03_010_jr_80154C24.c | 339 --- src/ov_SC03_010/ov_SC03_010_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_011/ov_SC03_011_jr_80154C24.c | 339 --- src/ov_SC03_011/ov_SC03_011_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_012/ov_SC03_012_jr_80154C24.c | 339 --- src/ov_SC03_012/ov_SC03_012_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_013/ov_SC03_013_jr_80154C24.c | 339 --- src/ov_SC03_013/ov_SC03_013_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_014/ov_SC03_014_jr_80154C24.c | 339 --- src/ov_SC03_014/ov_SC03_014_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_015/ov_SC03_015_jr_80154C24.c | 339 --- src/ov_SC03_015/ov_SC03_015_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_023/ov_SC03_023_jr_80154C24.c | 339 --- src/ov_SC03_023/ov_SC03_023_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_024/ov_SC03_024_jr_80154C24.c | 339 --- src/ov_SC03_024/ov_SC03_024_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_028/ov_SC03_028_jr_80154C24.c | 339 --- src/ov_SC03_028/ov_SC03_028_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_029/ov_SC03_029_jr_80154C24.c | 339 --- src/ov_SC03_029/ov_SC03_029_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_030/ov_SC03_030_jr_80154C24.c | 339 --- src/ov_SC03_030/ov_SC03_030_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_031/ov_SC03_031_jr_80154C24.c | 339 --- src/ov_SC03_031/ov_SC03_031_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_089/ov_SC03_089_jr_80154C24.c | 339 --- src/ov_SC03_089/ov_SC03_089_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_090/ov_SC03_090_jr_80154C24.c | 339 --- src/ov_SC03_090/ov_SC03_090_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_091/ov_SC03_091_jr_80154C24.c | 339 --- src/ov_SC03_091/ov_SC03_091_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_092/ov_SC03_092_jr_80154C24.c | 339 --- src/ov_SC03_092/ov_SC03_092_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_093/ov_SC03_093_jr_80154C24.c | 339 --- src/ov_SC03_093/ov_SC03_093_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_094/ov_SC03_094_jr_80154C24.c | 339 --- src/ov_SC03_094/ov_SC03_094_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_095/ov_SC03_095_jr_80154C24.c | 339 --- src/ov_SC03_095/ov_SC03_095_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_096/ov_SC03_096_jr_80154C24.c | 339 --- src/ov_SC03_096/ov_SC03_096_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_097/ov_SC03_097_jr_80154C24.c | 339 --- src/ov_SC03_097/ov_SC03_097_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_098/ov_SC03_098_jr_80154C24.c | 339 --- src/ov_SC03_098/ov_SC03_098_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_099/ov_SC03_099_jr_80154C24.c | 339 --- src/ov_SC03_099/ov_SC03_099_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_100/ov_SC03_100_jr_80154C24.c | 339 --- src/ov_SC03_100/ov_SC03_100_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_101/ov_SC03_101_jr_80154C24.c | 339 --- src/ov_SC03_101/ov_SC03_101_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_102/ov_SC03_102_jr_80154C24.c | 339 --- src/ov_SC03_102/ov_SC03_102_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_103/ov_SC03_103_jr_80154C24.c | 339 --- src/ov_SC03_103/ov_SC03_103_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_104/ov_SC03_104_jr_80154C24.c | 339 --- src/ov_SC03_104/ov_SC03_104_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_105/ov_SC03_105_jr_80154C24.c | 339 --- src/ov_SC03_105/ov_SC03_105_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_108/ov_SC03_108_jr_80154C24.c | 339 --- src/ov_SC03_108/ov_SC03_108_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_109/ov_SC03_109_jr_80154C24.c | 339 --- src/ov_SC03_109/ov_SC03_109_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_110/ov_SC03_110_jr_80154C24.c | 339 --- src/ov_SC03_110/ov_SC03_110_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_111/ov_SC03_111_jr_80154C24.c | 339 --- src/ov_SC03_111/ov_SC03_111_jr_801588CC.c | 1536 ++++++++++++ src/ov_SC03_112/ov_SC03_112_jr_80154C24.c | 339 --- src/ov_SC03_112/ov_SC03_112_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC03_113/ov_SC03_113_jr_80154C24.c | 339 --- src/ov_SC03_113/ov_SC03_113_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC03_114/ov_SC03_114_jr_80154C24.c | 339 --- src/ov_SC03_114/ov_SC03_114_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC03_115/ov_SC03_115_jr_80154C24.c | 339 --- src/ov_SC03_115/ov_SC03_115_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC03_116/ov_SC03_116_jr_80154C24.c | 339 --- src/ov_SC03_116/ov_SC03_116_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC03_117/ov_SC03_117_jr_80154C24.c | 339 --- src/ov_SC03_117/ov_SC03_117_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC03_118/ov_SC03_118_jr_80154C24.c | 339 --- src/ov_SC03_118/ov_SC03_118_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC03_119/ov_SC03_119_jr_80154C24.c | 339 --- src/ov_SC03_119/ov_SC03_119_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC03_121/ov_SC03_121_jr_80154C24.c | 339 --- src/ov_SC03_121/ov_SC03_121_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC03_124/ov_SC03_124_jr_80154C24.c | 339 --- src/ov_SC03_124/ov_SC03_124_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC03_125/ov_SC03_125_jr_80154C24.c | 339 --- src/ov_SC03_125/ov_SC03_125_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC03_126/ov_SC03_126_jr_80154C24.c | 339 --- src/ov_SC03_126/ov_SC03_126_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_000/ov_SC04_000_jr_80154C24.c | 339 --- src/ov_SC04_000/ov_SC04_000_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_002/ov_SC04_002_jr_80154C24.c | 339 --- src/ov_SC04_002/ov_SC04_002_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_003/ov_SC04_003_jr_80154C24.c | 339 --- src/ov_SC04_003/ov_SC04_003_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_004/ov_SC04_004_jr_80154C24.c | 339 --- src/ov_SC04_004/ov_SC04_004_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_005/ov_SC04_005_jr_80154C24.c | 339 --- src/ov_SC04_005/ov_SC04_005_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_006/ov_SC04_006_jr_80154C24.c | 339 --- src/ov_SC04_006/ov_SC04_006_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_007/ov_SC04_007_jr_80154C24.c | 339 --- src/ov_SC04_007/ov_SC04_007_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_008/ov_SC04_008_jr_80154C24.c | 339 --- src/ov_SC04_008/ov_SC04_008_jr_801588CC.c | 1537 ++++++++++++ src/ov_SC04_009/ov_SC04_009_jr_80154C24.c | 339 --- src/ov_SC04_009/ov_SC04_009_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_010/ov_SC04_010_jr_80154C24.c | 339 --- src/ov_SC04_010/ov_SC04_010_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_011/ov_SC04_011_jr_80154C24.c | 339 --- src/ov_SC04_011/ov_SC04_011_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_012/ov_SC04_012_jr_80154C24.c | 339 --- src/ov_SC04_012/ov_SC04_012_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_015/ov_SC04_015_jr_80154C24.c | 339 --- src/ov_SC04_015/ov_SC04_015_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_016/ov_SC04_016_jr_80154C24.c | 339 --- src/ov_SC04_016/ov_SC04_016_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_018/ov_SC04_018_jr_80154C24.c | 339 --- src/ov_SC04_018/ov_SC04_018_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_019/ov_SC04_019_jr_80154C24.c | 339 --- src/ov_SC04_019/ov_SC04_019_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_020/ov_SC04_020_jr_80154C24.c | 339 --- src/ov_SC04_020/ov_SC04_020_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC04_021/ov_SC04_021_jr_80154C24.c | 339 --- src/ov_SC04_021/ov_SC04_021_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_000/ov_SC05_000_jr_80154C24.c | 339 --- src/ov_SC05_000/ov_SC05_000_jr_801588CC.c | 1513 ++++++++++++ src/ov_SC05_001/ov_SC05_001_jr_80154C24.c | 339 --- src/ov_SC05_001/ov_SC05_001_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_002/ov_SC05_002_jr_80154C24.c | 339 --- src/ov_SC05_002/ov_SC05_002_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_003/ov_SC05_003_jr_80154C24.c | 339 --- src/ov_SC05_003/ov_SC05_003_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_004/ov_SC05_004_jr_80154C24.c | 339 --- src/ov_SC05_004/ov_SC05_004_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_005/ov_SC05_005_jr_80154C24.c | 339 --- src/ov_SC05_005/ov_SC05_005_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_006/ov_SC05_006_jr_80154C24.c | 339 --- src/ov_SC05_006/ov_SC05_006_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_007/ov_SC05_007_jr_80154C24.c | 339 --- src/ov_SC05_007/ov_SC05_007_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_008/ov_SC05_008_jr_80154C24.c | 339 --- src/ov_SC05_008/ov_SC05_008_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_009/ov_SC05_009_jr_80154C24.c | 339 --- src/ov_SC05_009/ov_SC05_009_jr_801588CC.c | 1537 ++++++++++++ src/ov_SC05_010/ov_SC05_010_jr_80154C24.c | 339 --- src/ov_SC05_010/ov_SC05_010_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_011/ov_SC05_011_jr_80154C24.c | 339 --- src/ov_SC05_011/ov_SC05_011_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_017/ov_SC05_017_jr_80154C24.c | 339 --- src/ov_SC05_017/ov_SC05_017_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_018/ov_SC05_018_jr_80154C24.c | 339 --- src/ov_SC05_018/ov_SC05_018_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC05_019/ov_SC05_019_jr_80154C24.c | 339 --- src/ov_SC05_019/ov_SC05_019_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_000/ov_SC06_000_jr_80154C24.c | 339 --- src/ov_SC06_000/ov_SC06_000_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_006/ov_SC06_006_jr_80154C24.c | 339 --- src/ov_SC06_006/ov_SC06_006_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_008/ov_SC06_008_jr_80154C24.c | 339 --- src/ov_SC06_008/ov_SC06_008_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_010/ov_SC06_010_jr_80154C24.c | 339 --- src/ov_SC06_010/ov_SC06_010_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_011/ov_SC06_011_jr_80154C24.c | 339 --- src/ov_SC06_011/ov_SC06_011_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_013/ov_SC06_013_jr_80154C24.c | 339 --- src/ov_SC06_013/ov_SC06_013_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_014/ov_SC06_014_jr_80154C24.c | 339 --- src/ov_SC06_014/ov_SC06_014_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_015/ov_SC06_015_jr_80154C24.c | 339 --- src/ov_SC06_015/ov_SC06_015_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_016/ov_SC06_016_jr_80154C24.c | 339 --- src/ov_SC06_016/ov_SC06_016_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_018/ov_SC06_018_jr_80154C24.c | 339 --- src/ov_SC06_018/ov_SC06_018_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_020/ov_SC06_020_jr_80154C24.c | 339 --- src/ov_SC06_020/ov_SC06_020_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_022/ov_SC06_022_jr_80154C24.c | 339 --- src/ov_SC06_022/ov_SC06_022_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_024/ov_SC06_024_jr_80154C24.c | 339 --- src/ov_SC06_024/ov_SC06_024_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_025/ov_SC06_025_jr_80154C24.c | 339 --- src/ov_SC06_025/ov_SC06_025_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_027/ov_SC06_027_jr_80154C24.c | 339 --- src/ov_SC06_027/ov_SC06_027_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_029/ov_SC06_029_jr_80154C24.c | 339 --- src/ov_SC06_029/ov_SC06_029_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_030/ov_SC06_030_jr_80154C24.c | 339 --- src/ov_SC06_030/ov_SC06_030_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_032/ov_SC06_032_jr_80154C24.c | 339 --- src/ov_SC06_032/ov_SC06_032_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC06_033/ov_SC06_033_jr_80154C24.c | 339 --- src/ov_SC06_033/ov_SC06_033_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC07_000/ov_SC07_000_jr_80154C24.c | 339 --- src/ov_SC07_000/ov_SC07_000_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC07_001/ov_SC07_001_jr_80154C24.c | 339 --- src/ov_SC07_001/ov_SC07_001_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC07_002/ov_SC07_002_jr_80154C24.c | 339 --- src/ov_SC07_002/ov_SC07_002_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC07_006/ov_SC07_006_jr_80154C24.c | 643 ----- src/ov_SC07_006/ov_SC07_006_jr_801588CC.c | 2659 ++++++++++++++++++++ src/ov_SC07_007/ov_SC07_007_jr_80154C24.c | 643 ----- src/ov_SC07_007/ov_SC07_007_jr_801588CC.c | 2659 ++++++++++++++++++++ src/ov_SC07_008/ov_SC07_008_jr_80154C24.c | 339 --- src/ov_SC07_008/ov_SC07_008_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC07_009/ov_SC07_009_jr_80154C24.c | 339 --- src/ov_SC07_009/ov_SC07_009_jr_801588CC.c | 1515 ++++++++++++ src/ov_SC07_010/ov_SC07_010_jr_80154C24.c | 643 ----- src/ov_SC07_010/ov_SC07_010_jr_801588CC.c | 2079 ++++++++++++++++ src/ov_SC07_011/ov_SC07_011_jr_80154C24.c | 643 ----- src/ov_SC07_011/ov_SC07_011_jr_801588CC.c | 2660 +++++++++++++++++++++ 415 files changed, 216256 insertions(+), 49317 deletions(-) create mode 100644 src/ov_SC01_000/ov_SC01_000_jr_801588CC.c create mode 100644 src/ov_SC01_001/ov_SC01_001_jr_801588CC.c create mode 100644 src/ov_SC01_004/ov_SC01_004_jr_801588CC.c create mode 100644 src/ov_SC01_005/ov_SC01_005_jr_801588CC.c create mode 100644 src/ov_SC01_006/ov_SC01_006_jr_801588CC.c create mode 100644 src/ov_SC01_008/ov_SC01_008_jr_801588CC.c create mode 100644 src/ov_SC01_009/ov_SC01_009_jr_801588CC.c create mode 100644 src/ov_SC01_074/ov_SC01_074_jr_801588CC.c create mode 100644 src/ov_SC01_077/ov_SC01_077_jr_801588CC.c create mode 100644 src/ov_SC01_080/ov_SC01_080_jr_801588CC.c create mode 100644 src/ov_SC01_084/ov_SC01_084_jr_801588CC.c create mode 100644 src/ov_SC02_000/ov_SC02_000_jr_801588CC.c create mode 100644 src/ov_SC02_003/ov_SC02_003_jr_801588CC.c create mode 100644 src/ov_SC02_004/ov_SC02_004_jr_801588CC.c create mode 100644 src/ov_SC02_005/ov_SC02_005_jr_801588CC.c create mode 100644 src/ov_SC02_011/ov_SC02_011_jr_801588CC.c create mode 100644 src/ov_SC02_015/ov_SC02_015_jr_801588CC.c create mode 100644 src/ov_SC02_016/ov_SC02_016_jr_801588CC.c create mode 100644 src/ov_SC02_017/ov_SC02_017_jr_801588CC.c create mode 100644 src/ov_SC02_021/ov_SC02_021_jr_801588CC.c create mode 100644 src/ov_SC02_026/ov_SC02_026_jr_801588CC.c create mode 100644 src/ov_SC02_027/ov_SC02_027_jr_801588CC.c create mode 100644 src/ov_SC02_028/ov_SC02_028_jr_801588CC.c create mode 100644 src/ov_SC02_031/ov_SC02_031_jr_801588CC.c create mode 100644 src/ov_SC02_035/ov_SC02_035_jr_801588CC.c create mode 100644 src/ov_SC02_039/ov_SC02_039_jr_801588CC.c create mode 100644 src/ov_SC02_041/ov_SC02_041_jr_801588CC.c create mode 100644 src/ov_SC03_001/ov_SC03_001_jr_801588CC.c create mode 100644 src/ov_SC03_002/ov_SC03_002_jr_801588CC.c create mode 100644 src/ov_SC03_003/ov_SC03_003_jr_801588CC.c create mode 100644 src/ov_SC03_006/ov_SC03_006_jr_801588CC.c create mode 100644 src/ov_SC03_007/ov_SC03_007_jr_801588CC.c create mode 100644 src/ov_SC03_010/ov_SC03_010_jr_801588CC.c create mode 100644 src/ov_SC03_011/ov_SC03_011_jr_801588CC.c create mode 100644 src/ov_SC03_012/ov_SC03_012_jr_801588CC.c create mode 100644 src/ov_SC03_013/ov_SC03_013_jr_801588CC.c create mode 100644 src/ov_SC03_014/ov_SC03_014_jr_801588CC.c create mode 100644 src/ov_SC03_015/ov_SC03_015_jr_801588CC.c create mode 100644 src/ov_SC03_023/ov_SC03_023_jr_801588CC.c create mode 100644 src/ov_SC03_024/ov_SC03_024_jr_801588CC.c create mode 100644 src/ov_SC03_028/ov_SC03_028_jr_801588CC.c create mode 100644 src/ov_SC03_029/ov_SC03_029_jr_801588CC.c create mode 100644 src/ov_SC03_030/ov_SC03_030_jr_801588CC.c create mode 100644 src/ov_SC03_031/ov_SC03_031_jr_801588CC.c create mode 100644 src/ov_SC03_089/ov_SC03_089_jr_801588CC.c create mode 100644 src/ov_SC03_090/ov_SC03_090_jr_801588CC.c create mode 100644 src/ov_SC03_091/ov_SC03_091_jr_801588CC.c create mode 100644 src/ov_SC03_092/ov_SC03_092_jr_801588CC.c create mode 100644 src/ov_SC03_093/ov_SC03_093_jr_801588CC.c create mode 100644 src/ov_SC03_094/ov_SC03_094_jr_801588CC.c create mode 100644 src/ov_SC03_095/ov_SC03_095_jr_801588CC.c create mode 100644 src/ov_SC03_096/ov_SC03_096_jr_801588CC.c create mode 100644 src/ov_SC03_097/ov_SC03_097_jr_801588CC.c create mode 100644 src/ov_SC03_098/ov_SC03_098_jr_801588CC.c create mode 100644 src/ov_SC03_099/ov_SC03_099_jr_801588CC.c create mode 100644 src/ov_SC03_100/ov_SC03_100_jr_801588CC.c create mode 100644 src/ov_SC03_101/ov_SC03_101_jr_801588CC.c create mode 100644 src/ov_SC03_102/ov_SC03_102_jr_801588CC.c create mode 100644 src/ov_SC03_103/ov_SC03_103_jr_801588CC.c create mode 100644 src/ov_SC03_104/ov_SC03_104_jr_801588CC.c create mode 100644 src/ov_SC03_105/ov_SC03_105_jr_801588CC.c create mode 100644 src/ov_SC03_108/ov_SC03_108_jr_801588CC.c create mode 100644 src/ov_SC03_109/ov_SC03_109_jr_801588CC.c create mode 100644 src/ov_SC03_110/ov_SC03_110_jr_801588CC.c create mode 100644 src/ov_SC03_111/ov_SC03_111_jr_801588CC.c create mode 100644 src/ov_SC03_112/ov_SC03_112_jr_801588CC.c create mode 100644 src/ov_SC03_113/ov_SC03_113_jr_801588CC.c create mode 100644 src/ov_SC03_114/ov_SC03_114_jr_801588CC.c create mode 100644 src/ov_SC03_115/ov_SC03_115_jr_801588CC.c create mode 100644 src/ov_SC03_116/ov_SC03_116_jr_801588CC.c create mode 100644 src/ov_SC03_117/ov_SC03_117_jr_801588CC.c create mode 100644 src/ov_SC03_118/ov_SC03_118_jr_801588CC.c create mode 100644 src/ov_SC03_119/ov_SC03_119_jr_801588CC.c create mode 100644 src/ov_SC03_121/ov_SC03_121_jr_801588CC.c create mode 100644 src/ov_SC03_124/ov_SC03_124_jr_801588CC.c create mode 100644 src/ov_SC03_125/ov_SC03_125_jr_801588CC.c create mode 100644 src/ov_SC03_126/ov_SC03_126_jr_801588CC.c create mode 100644 src/ov_SC04_000/ov_SC04_000_jr_801588CC.c create mode 100644 src/ov_SC04_002/ov_SC04_002_jr_801588CC.c create mode 100644 src/ov_SC04_003/ov_SC04_003_jr_801588CC.c create mode 100644 src/ov_SC04_004/ov_SC04_004_jr_801588CC.c create mode 100644 src/ov_SC04_005/ov_SC04_005_jr_801588CC.c create mode 100644 src/ov_SC04_006/ov_SC04_006_jr_801588CC.c create mode 100644 src/ov_SC04_007/ov_SC04_007_jr_801588CC.c create mode 100644 src/ov_SC04_008/ov_SC04_008_jr_801588CC.c create mode 100644 src/ov_SC04_009/ov_SC04_009_jr_801588CC.c create mode 100644 src/ov_SC04_010/ov_SC04_010_jr_801588CC.c create mode 100644 src/ov_SC04_011/ov_SC04_011_jr_801588CC.c create mode 100644 src/ov_SC04_012/ov_SC04_012_jr_801588CC.c create mode 100644 src/ov_SC04_015/ov_SC04_015_jr_801588CC.c create mode 100644 src/ov_SC04_016/ov_SC04_016_jr_801588CC.c create mode 100644 src/ov_SC04_018/ov_SC04_018_jr_801588CC.c create mode 100644 src/ov_SC04_019/ov_SC04_019_jr_801588CC.c create mode 100644 src/ov_SC04_020/ov_SC04_020_jr_801588CC.c create mode 100644 src/ov_SC04_021/ov_SC04_021_jr_801588CC.c create mode 100644 src/ov_SC05_000/ov_SC05_000_jr_801588CC.c create mode 100644 src/ov_SC05_001/ov_SC05_001_jr_801588CC.c create mode 100644 src/ov_SC05_002/ov_SC05_002_jr_801588CC.c create mode 100644 src/ov_SC05_003/ov_SC05_003_jr_801588CC.c create mode 100644 src/ov_SC05_004/ov_SC05_004_jr_801588CC.c create mode 100644 src/ov_SC05_005/ov_SC05_005_jr_801588CC.c create mode 100644 src/ov_SC05_006/ov_SC05_006_jr_801588CC.c create mode 100644 src/ov_SC05_007/ov_SC05_007_jr_801588CC.c create mode 100644 src/ov_SC05_008/ov_SC05_008_jr_801588CC.c create mode 100644 src/ov_SC05_009/ov_SC05_009_jr_801588CC.c create mode 100644 src/ov_SC05_010/ov_SC05_010_jr_801588CC.c create mode 100644 src/ov_SC05_011/ov_SC05_011_jr_801588CC.c create mode 100644 src/ov_SC05_017/ov_SC05_017_jr_801588CC.c create mode 100644 src/ov_SC05_018/ov_SC05_018_jr_801588CC.c create mode 100644 src/ov_SC05_019/ov_SC05_019_jr_801588CC.c create mode 100644 src/ov_SC06_000/ov_SC06_000_jr_801588CC.c create mode 100644 src/ov_SC06_006/ov_SC06_006_jr_801588CC.c create mode 100644 src/ov_SC06_008/ov_SC06_008_jr_801588CC.c create mode 100644 src/ov_SC06_010/ov_SC06_010_jr_801588CC.c create mode 100644 src/ov_SC06_011/ov_SC06_011_jr_801588CC.c create mode 100644 src/ov_SC06_013/ov_SC06_013_jr_801588CC.c create mode 100644 src/ov_SC06_014/ov_SC06_014_jr_801588CC.c create mode 100644 src/ov_SC06_015/ov_SC06_015_jr_801588CC.c create mode 100644 src/ov_SC06_016/ov_SC06_016_jr_801588CC.c create mode 100644 src/ov_SC06_018/ov_SC06_018_jr_801588CC.c create mode 100644 src/ov_SC06_020/ov_SC06_020_jr_801588CC.c create mode 100644 src/ov_SC06_022/ov_SC06_022_jr_801588CC.c create mode 100644 src/ov_SC06_024/ov_SC06_024_jr_801588CC.c create mode 100644 src/ov_SC06_025/ov_SC06_025_jr_801588CC.c create mode 100644 src/ov_SC06_027/ov_SC06_027_jr_801588CC.c create mode 100644 src/ov_SC06_029/ov_SC06_029_jr_801588CC.c create mode 100644 src/ov_SC06_030/ov_SC06_030_jr_801588CC.c create mode 100644 src/ov_SC06_032/ov_SC06_032_jr_801588CC.c create mode 100644 src/ov_SC06_033/ov_SC06_033_jr_801588CC.c create mode 100644 src/ov_SC07_000/ov_SC07_000_jr_801588CC.c create mode 100644 src/ov_SC07_001/ov_SC07_001_jr_801588CC.c create mode 100644 src/ov_SC07_002/ov_SC07_002_jr_801588CC.c create mode 100644 src/ov_SC07_006/ov_SC07_006_jr_801588CC.c create mode 100644 src/ov_SC07_007/ov_SC07_007_jr_801588CC.c create mode 100644 src/ov_SC07_008/ov_SC07_008_jr_801588CC.c create mode 100644 src/ov_SC07_009/ov_SC07_009_jr_801588CC.c create mode 100644 src/ov_SC07_010/ov_SC07_010_jr_801588CC.c create mode 100644 src/ov_SC07_011/ov_SC07_011_jr_801588CC.c diff --git a/config/overlays.mk b/config/overlays.mk index 4dfa232d4..e5d05545f 100644 --- a/config/overlays.mk +++ b/config/overlays.mk @@ -21,7 +21,7 @@ ov_SC01_077_ELF := $(ov_SC01_077_OUT).elf ov_SC01_077_MAPFILE := $(ov_SC01_077_OUT).map ov_SC01_077_LD_SCRIPT := $(ov_SC01_077_OUT).ld ov_SC01_077_SPLAT_YAML := config/splat.ov_SC01_077.yaml -ov_SC01_077_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_077_jr_8012ACE0.o,tail2.data.o,ov_SC01_077_jr_801380E0.o,tail3.data.o,ov_SC01_077_o0.o,tail4.data.o,ov_SC01_077.o,tail5.data.o,ov_SC01_077_jr_8015444C.o,tail6.data.o,ov_SC01_077_jr_80154C24.o,tail7.data.o,ov_SC01_077_jr_80159C84.o,tail8.data.o,ov_SC01_077_jr_8015A3C8.o,tail9.data.o,ov_SC01_077_jr_8015AE2C.o,tail10.data.o,ov_SC01_077_jr_8015C32C.o,tail11.data.o,ov_SC01_077_jr_8016AB6C.o,tail12.data.o,ov_SC01_077_jr_801734BC.o,tail13.data.o,ov_SC01_077_jr_80178D40.o,tail14.data.o,ov_SC01_077_jr_8017A4AC.o,tail15.data.o,ov_SC01_077_jr_80182268.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_077_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_077_jr_8012ACE0.o,tail2.data.o,ov_SC01_077_jr_801380E0.o,tail3.data.o,ov_SC01_077_o0.o,tail4.data.o,ov_SC01_077.o,tail5.data.o,ov_SC01_077_jr_8015444C.o,tail6.data.o,ov_SC01_077_jr_80154C24.o,tail7.data.o,ov_SC01_077_jr_801588CC.o,tail8.data.o,ov_SC01_077_jr_80159C84.o,tail9.data.o,ov_SC01_077_jr_8015A3C8.o,tail10.data.o,ov_SC01_077_jr_8015AE2C.o,tail11.data.o,ov_SC01_077_jr_8015C32C.o,tail12.data.o,ov_SC01_077_jr_8016AB6C.o,tail13.data.o,ov_SC01_077_jr_801734BC.o,tail14.data.o,ov_SC01_077_jr_80178D40.o,tail15.data.o,ov_SC01_077_jr_8017A4AC.o,tail16.data.o,ov_SC01_077_jr_80182268.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_077/ov_SC01_077.o: JTBL_PADS := 0,0,4,0,4,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x38,+0x58,+0x70,+0x90 build/src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc build/src/ov_SC01_077/ov_SC01_077_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -46,7 +46,7 @@ ov_SC01_005_ELF := $(ov_SC01_005_OUT).elf ov_SC01_005_MAPFILE := $(ov_SC01_005_OUT).map ov_SC01_005_LD_SCRIPT := $(ov_SC01_005_OUT).ld ov_SC01_005_SPLAT_YAML := config/splat.ov_SC01_005.yaml -ov_SC01_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_005_jr_8012ACE0.o,tail2.data.o,ov_SC01_005_jr_801380E0.o,tail3.data.o,ov_SC01_005_jr_8013F350.o,tail4.data.o,ov_SC01_005_jr_8013FFD8.o,tail5.data.o,ov_SC01_005_jr_8015444C.o,tail6.data.o,ov_SC01_005_jr_80154C24.o,tail7.data.o,ov_SC01_005_jr_80159C84.o,tail8.data.o,ov_SC01_005_jr_8015A3C8.o,tail9.data.o,ov_SC01_005_jr_8015AE2C.o,tail10.data.o,ov_SC01_005_jr_8015C32C.o,tail11.data.o,ov_SC01_005_jr_8016AB6C.o,tail12.data.o,ov_SC01_005_jr_801734BC.o,tail13.data.o,ov_SC01_005_jr_80178D40.o,tail14.data.o,ov_SC01_005_jr_8017A4AC.o,tail15.data.o,ov_SC01_005_jr_8017C340.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_005_jr_8012ACE0.o,tail2.data.o,ov_SC01_005_jr_801380E0.o,tail3.data.o,ov_SC01_005_jr_8013F350.o,tail4.data.o,ov_SC01_005_jr_8013FFD8.o,tail5.data.o,ov_SC01_005_jr_8015444C.o,tail6.data.o,ov_SC01_005_jr_80154C24.o,tail7.data.o,ov_SC01_005_jr_801588CC.o,tail8.data.o,ov_SC01_005_jr_80159C84.o,tail9.data.o,ov_SC01_005_jr_8015A3C8.o,tail10.data.o,ov_SC01_005_jr_8015AE2C.o,tail11.data.o,ov_SC01_005_jr_8015C32C.o,tail12.data.o,ov_SC01_005_jr_8016AB6C.o,tail13.data.o,ov_SC01_005_jr_801734BC.o,tail14.data.o,ov_SC01_005_jr_80178D40.o,tail15.data.o,ov_SC01_005_jr_8017A4AC.o,tail16.data.o,ov_SC01_005_jr_8017C340.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_005/ov_SC01_005_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_005/ov_SC01_005_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_005/ov_SC01_005_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -71,7 +71,7 @@ ov_SC01_006_ELF := $(ov_SC01_006_OUT).elf ov_SC01_006_MAPFILE := $(ov_SC01_006_OUT).map ov_SC01_006_LD_SCRIPT := $(ov_SC01_006_OUT).ld ov_SC01_006_SPLAT_YAML := config/splat.ov_SC01_006.yaml -ov_SC01_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_006_jr_8012ACE0.o,tail2.data.o,ov_SC01_006_jr_801380E0.o,tail3.data.o,ov_SC01_006_jr_8013F350.o,tail4.data.o,ov_SC01_006_jr_8013FFD8.o,tail5.data.o,ov_SC01_006_jr_8015444C.o,tail6.data.o,ov_SC01_006_jr_80154C24.o,tail7.data.o,ov_SC01_006_jr_80159C84.o,tail8.data.o,ov_SC01_006_jr_8015A3C8.o,tail9.data.o,ov_SC01_006_jr_8015AE2C.o,tail10.data.o,ov_SC01_006_jr_8015C32C.o,tail11.data.o,ov_SC01_006_jr_8016AB6C.o,tail12.data.o,ov_SC01_006_jr_801734BC.o,tail13.data.o,ov_SC01_006_jr_80178D40.o,tail14.data.o,ov_SC01_006_jr_8017A4AC.o,tail15.data.o,ov_SC01_006_jr_8017C340.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_006_jr_8012ACE0.o,tail2.data.o,ov_SC01_006_jr_801380E0.o,tail3.data.o,ov_SC01_006_jr_8013F350.o,tail4.data.o,ov_SC01_006_jr_8013FFD8.o,tail5.data.o,ov_SC01_006_jr_8015444C.o,tail6.data.o,ov_SC01_006_jr_80154C24.o,tail7.data.o,ov_SC01_006_jr_801588CC.o,tail8.data.o,ov_SC01_006_jr_80159C84.o,tail9.data.o,ov_SC01_006_jr_8015A3C8.o,tail10.data.o,ov_SC01_006_jr_8015AE2C.o,tail11.data.o,ov_SC01_006_jr_8015C32C.o,tail12.data.o,ov_SC01_006_jr_8016AB6C.o,tail13.data.o,ov_SC01_006_jr_801734BC.o,tail14.data.o,ov_SC01_006_jr_80178D40.o,tail15.data.o,ov_SC01_006_jr_8017A4AC.o,tail16.data.o,ov_SC01_006_jr_8017C340.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_006/ov_SC01_006_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_006/ov_SC01_006_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_006/ov_SC01_006_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -96,7 +96,7 @@ ov_SC03_001_ELF := $(ov_SC03_001_OUT).elf ov_SC03_001_MAPFILE := $(ov_SC03_001_OUT).map ov_SC03_001_LD_SCRIPT := $(ov_SC03_001_OUT).ld ov_SC03_001_SPLAT_YAML := config/splat.ov_SC03_001.yaml -ov_SC03_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_001_jr_8012ACE0.o,tail2.data.o,ov_SC03_001_jr_801380E0.o,tail3.data.o,ov_SC03_001_jr_8013F350.o,tail4.data.o,ov_SC03_001_jr_8013FFD8.o,tail5.data.o,ov_SC03_001_jr_8015444C.o,tail6.data.o,ov_SC03_001_jr_80154C24.o,tail7.data.o,ov_SC03_001_jr_80159C84.o,tail8.data.o,ov_SC03_001_jr_8015A3C8.o,tail9.data.o,ov_SC03_001_jr_8015AE2C.o,tail10.data.o,ov_SC03_001_jr_8015C32C.o,tail11.data.o,ov_SC03_001_jr_8016AB6C.o,tail12.data.o,ov_SC03_001_jr_801734BC.o,tail13.data.o,ov_SC03_001_jr_80178D40.o,tail14.data.o,ov_SC03_001_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_001_jr_8012ACE0.o,tail2.data.o,ov_SC03_001_jr_801380E0.o,tail3.data.o,ov_SC03_001_jr_8013F350.o,tail4.data.o,ov_SC03_001_jr_8013FFD8.o,tail5.data.o,ov_SC03_001_jr_8015444C.o,tail6.data.o,ov_SC03_001_jr_80154C24.o,tail7.data.o,ov_SC03_001_jr_801588CC.o,tail8.data.o,ov_SC03_001_jr_80159C84.o,tail9.data.o,ov_SC03_001_jr_8015A3C8.o,tail10.data.o,ov_SC03_001_jr_8015AE2C.o,tail11.data.o,ov_SC03_001_jr_8015C32C.o,tail12.data.o,ov_SC03_001_jr_8016AB6C.o,tail13.data.o,ov_SC03_001_jr_801734BC.o,tail14.data.o,ov_SC03_001_jr_80178D40.o,tail15.data.o,ov_SC03_001_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_001/ov_SC03_001_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_001/ov_SC03_001_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_001/ov_SC03_001_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -121,7 +121,7 @@ ov_SC01_000_ELF := $(ov_SC01_000_OUT).elf ov_SC01_000_MAPFILE := $(ov_SC01_000_OUT).map ov_SC01_000_LD_SCRIPT := $(ov_SC01_000_OUT).ld ov_SC01_000_SPLAT_YAML := config/splat.ov_SC01_000.yaml -ov_SC01_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_000_jr_8012ACE0.o,tail2.data.o,ov_SC01_000_jr_801380E0.o,tail3.data.o,ov_SC01_000_jr_8013F350.o,tail4.data.o,ov_SC01_000_jr_8013FFD8.o,tail5.data.o,ov_SC01_000_jr_8015444C.o,tail6.data.o,ov_SC01_000_jr_80154C24.o,tail7.data.o,ov_SC01_000_jr_80159C84.o,tail8.data.o,ov_SC01_000_jr_8015A3C8.o,tail9.data.o,ov_SC01_000_jr_8015AE2C.o,tail10.data.o,ov_SC01_000_jr_8015C32C.o,tail11.data.o,ov_SC01_000_jr_8016AB6C.o,tail12.data.o,ov_SC01_000_jr_801734BC.o,tail13.data.o,ov_SC01_000_jr_80178D40.o,tail14.data.o,ov_SC01_000_jr_8017A4AC.o,tail15.data.o,ov_SC01_000_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_000_jr_8012ACE0.o,tail2.data.o,ov_SC01_000_jr_801380E0.o,tail3.data.o,ov_SC01_000_jr_8013F350.o,tail4.data.o,ov_SC01_000_jr_8013FFD8.o,tail5.data.o,ov_SC01_000_jr_8015444C.o,tail6.data.o,ov_SC01_000_jr_80154C24.o,tail7.data.o,ov_SC01_000_jr_801588CC.o,tail8.data.o,ov_SC01_000_jr_80159C84.o,tail9.data.o,ov_SC01_000_jr_8015A3C8.o,tail10.data.o,ov_SC01_000_jr_8015AE2C.o,tail11.data.o,ov_SC01_000_jr_8015C32C.o,tail12.data.o,ov_SC01_000_jr_8016AB6C.o,tail13.data.o,ov_SC01_000_jr_801734BC.o,tail14.data.o,ov_SC01_000_jr_80178D40.o,tail15.data.o,ov_SC01_000_jr_8017A4AC.o,tail16.data.o,ov_SC01_000_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_000/ov_SC01_000_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_000/ov_SC01_000_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_000/ov_SC01_000_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -146,7 +146,7 @@ ov_SC01_001_ELF := $(ov_SC01_001_OUT).elf ov_SC01_001_MAPFILE := $(ov_SC01_001_OUT).map ov_SC01_001_LD_SCRIPT := $(ov_SC01_001_OUT).ld ov_SC01_001_SPLAT_YAML := config/splat.ov_SC01_001.yaml -ov_SC01_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_001_jr_8012ACE0.o,tail2.data.o,ov_SC01_001_jr_801380E0.o,tail3.data.o,ov_SC01_001_jr_8013F350.o,tail4.data.o,ov_SC01_001_jr_8013FFD8.o,tail5.data.o,ov_SC01_001_jr_8015444C.o,tail6.data.o,ov_SC01_001_jr_80154C24.o,tail7.data.o,ov_SC01_001_jr_80159C84.o,tail8.data.o,ov_SC01_001_jr_8015A3C8.o,tail9.data.o,ov_SC01_001_jr_8015AE2C.o,tail10.data.o,ov_SC01_001_jr_8015C32C.o,tail11.data.o,ov_SC01_001_jr_8016AB6C.o,tail12.data.o,ov_SC01_001_jr_801734BC.o,tail13.data.o,ov_SC01_001_jr_80178D40.o,tail14.data.o,ov_SC01_001_jr_8017A4AC.o,tail15.data.o,ov_SC01_001_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_001_jr_8012ACE0.o,tail2.data.o,ov_SC01_001_jr_801380E0.o,tail3.data.o,ov_SC01_001_jr_8013F350.o,tail4.data.o,ov_SC01_001_jr_8013FFD8.o,tail5.data.o,ov_SC01_001_jr_8015444C.o,tail6.data.o,ov_SC01_001_jr_80154C24.o,tail7.data.o,ov_SC01_001_jr_801588CC.o,tail8.data.o,ov_SC01_001_jr_80159C84.o,tail9.data.o,ov_SC01_001_jr_8015A3C8.o,tail10.data.o,ov_SC01_001_jr_8015AE2C.o,tail11.data.o,ov_SC01_001_jr_8015C32C.o,tail12.data.o,ov_SC01_001_jr_8016AB6C.o,tail13.data.o,ov_SC01_001_jr_801734BC.o,tail14.data.o,ov_SC01_001_jr_80178D40.o,tail15.data.o,ov_SC01_001_jr_8017A4AC.o,tail16.data.o,ov_SC01_001_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_001/ov_SC01_001_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_001/ov_SC01_001_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_001/ov_SC01_001_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -171,7 +171,7 @@ ov_SC02_000_ELF := $(ov_SC02_000_OUT).elf ov_SC02_000_MAPFILE := $(ov_SC02_000_OUT).map ov_SC02_000_LD_SCRIPT := $(ov_SC02_000_OUT).ld ov_SC02_000_SPLAT_YAML := config/splat.ov_SC02_000.yaml -ov_SC02_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_000_jr_8012ACE0.o,tail2.data.o,ov_SC02_000_jr_801380E0.o,tail3.data.o,ov_SC02_000_jr_8013F350.o,tail4.data.o,ov_SC02_000_jr_8013FFD8.o,tail5.data.o,ov_SC02_000_jr_8015444C.o,tail6.data.o,ov_SC02_000_jr_80154C24.o,tail7.data.o,ov_SC02_000_jr_80159C84.o,tail8.data.o,ov_SC02_000_jr_8015A3C8.o,tail9.data.o,ov_SC02_000_jr_8015AE2C.o,tail10.data.o,ov_SC02_000_jr_8015C32C.o,tail11.data.o,ov_SC02_000_jr_8016AB6C.o,tail12.data.o,ov_SC02_000_jr_801734BC.o,tail13.data.o,ov_SC02_000_jr_80178D40.o,tail14.data.o,ov_SC02_000_jr_8017A4AC.o,tail15.data.o,ov_SC02_000_jr_8017FCB0.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_000_jr_8012ACE0.o,tail2.data.o,ov_SC02_000_jr_801380E0.o,tail3.data.o,ov_SC02_000_jr_8013F350.o,tail4.data.o,ov_SC02_000_jr_8013FFD8.o,tail5.data.o,ov_SC02_000_jr_8015444C.o,tail6.data.o,ov_SC02_000_jr_80154C24.o,tail7.data.o,ov_SC02_000_jr_801588CC.o,tail8.data.o,ov_SC02_000_jr_80159C84.o,tail9.data.o,ov_SC02_000_jr_8015A3C8.o,tail10.data.o,ov_SC02_000_jr_8015AE2C.o,tail11.data.o,ov_SC02_000_jr_8015C32C.o,tail12.data.o,ov_SC02_000_jr_8016AB6C.o,tail13.data.o,ov_SC02_000_jr_801734BC.o,tail14.data.o,ov_SC02_000_jr_80178D40.o,tail15.data.o,ov_SC02_000_jr_8017A4AC.o,tail16.data.o,ov_SC02_000_jr_8017FCB0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_000/ov_SC02_000_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_000/ov_SC02_000_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_000/ov_SC02_000_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -196,7 +196,7 @@ ov_SC02_003_ELF := $(ov_SC02_003_OUT).elf ov_SC02_003_MAPFILE := $(ov_SC02_003_OUT).map ov_SC02_003_LD_SCRIPT := $(ov_SC02_003_OUT).ld ov_SC02_003_SPLAT_YAML := config/splat.ov_SC02_003.yaml -ov_SC02_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_003_jr_8012ACE0.o,tail2.data.o,ov_SC02_003_jr_801380E0.o,tail3.data.o,ov_SC02_003_jr_8013F350.o,tail4.data.o,ov_SC02_003_jr_8013FFD8.o,tail5.data.o,ov_SC02_003_jr_8015444C.o,tail6.data.o,ov_SC02_003_jr_80154C24.o,tail7.data.o,ov_SC02_003_jr_80159C84.o,tail8.data.o,ov_SC02_003_jr_8015A3C8.o,tail9.data.o,ov_SC02_003_jr_8015AE2C.o,tail10.data.o,ov_SC02_003_jr_8015C32C.o,tail11.data.o,ov_SC02_003_jr_8016AB6C.o,tail12.data.o,ov_SC02_003_jr_801734BC.o,tail13.data.o,ov_SC02_003_jr_80178D40.o,tail14.data.o,ov_SC02_003_jr_8017A4AC.o,tail15.data.o,ov_SC02_003_jr_8017FCB0.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_003_jr_8012ACE0.o,tail2.data.o,ov_SC02_003_jr_801380E0.o,tail3.data.o,ov_SC02_003_jr_8013F350.o,tail4.data.o,ov_SC02_003_jr_8013FFD8.o,tail5.data.o,ov_SC02_003_jr_8015444C.o,tail6.data.o,ov_SC02_003_jr_80154C24.o,tail7.data.o,ov_SC02_003_jr_801588CC.o,tail8.data.o,ov_SC02_003_jr_80159C84.o,tail9.data.o,ov_SC02_003_jr_8015A3C8.o,tail10.data.o,ov_SC02_003_jr_8015AE2C.o,tail11.data.o,ov_SC02_003_jr_8015C32C.o,tail12.data.o,ov_SC02_003_jr_8016AB6C.o,tail13.data.o,ov_SC02_003_jr_801734BC.o,tail14.data.o,ov_SC02_003_jr_80178D40.o,tail15.data.o,ov_SC02_003_jr_8017A4AC.o,tail16.data.o,ov_SC02_003_jr_8017FCB0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_003/ov_SC02_003_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_003/ov_SC02_003_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_003/ov_SC02_003_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -221,7 +221,7 @@ ov_SC03_002_ELF := $(ov_SC03_002_OUT).elf ov_SC03_002_MAPFILE := $(ov_SC03_002_OUT).map ov_SC03_002_LD_SCRIPT := $(ov_SC03_002_OUT).ld ov_SC03_002_SPLAT_YAML := config/splat.ov_SC03_002.yaml -ov_SC03_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_002_jr_8012ACE0.o,tail2.data.o,ov_SC03_002_jr_801380E0.o,tail3.data.o,ov_SC03_002_jr_8013F350.o,tail4.data.o,ov_SC03_002_jr_8013FFD8.o,tail5.data.o,ov_SC03_002_jr_8015444C.o,tail6.data.o,ov_SC03_002_jr_80154C24.o,tail7.data.o,ov_SC03_002_jr_80159C84.o,tail8.data.o,ov_SC03_002_jr_8015A3C8.o,tail9.data.o,ov_SC03_002_jr_8015AE2C.o,tail10.data.o,ov_SC03_002_jr_8015C32C.o,tail11.data.o,ov_SC03_002_jr_8016AB6C.o,tail12.data.o,ov_SC03_002_jr_801734BC.o,tail13.data.o,ov_SC03_002_jr_80178D40.o,tail14.data.o,ov_SC03_002_jr_8017A4AC.o,tail15.data.o,ov_SC03_002_jr_8017D604.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_002_jr_8012ACE0.o,tail2.data.o,ov_SC03_002_jr_801380E0.o,tail3.data.o,ov_SC03_002_jr_8013F350.o,tail4.data.o,ov_SC03_002_jr_8013FFD8.o,tail5.data.o,ov_SC03_002_jr_8015444C.o,tail6.data.o,ov_SC03_002_jr_80154C24.o,tail7.data.o,ov_SC03_002_jr_801588CC.o,tail8.data.o,ov_SC03_002_jr_80159C84.o,tail9.data.o,ov_SC03_002_jr_8015A3C8.o,tail10.data.o,ov_SC03_002_jr_8015AE2C.o,tail11.data.o,ov_SC03_002_jr_8015C32C.o,tail12.data.o,ov_SC03_002_jr_8016AB6C.o,tail13.data.o,ov_SC03_002_jr_801734BC.o,tail14.data.o,ov_SC03_002_jr_80178D40.o,tail15.data.o,ov_SC03_002_jr_8017A4AC.o,tail16.data.o,ov_SC03_002_jr_8017D604.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_002/ov_SC03_002_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_002/ov_SC03_002_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_002/ov_SC03_002_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -246,7 +246,7 @@ ov_SC03_006_ELF := $(ov_SC03_006_OUT).elf ov_SC03_006_MAPFILE := $(ov_SC03_006_OUT).map ov_SC03_006_LD_SCRIPT := $(ov_SC03_006_OUT).ld ov_SC03_006_SPLAT_YAML := config/splat.ov_SC03_006.yaml -ov_SC03_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_006_jr_8012ACE0.o,tail2.data.o,ov_SC03_006_jr_801380E0.o,tail3.data.o,ov_SC03_006_jr_8013F350.o,tail4.data.o,ov_SC03_006_jr_8013FFD8.o,tail5.data.o,ov_SC03_006_jr_8015444C.o,tail6.data.o,ov_SC03_006_jr_80154C24.o,tail7.data.o,ov_SC03_006_jr_80159C84.o,tail8.data.o,ov_SC03_006_jr_8015A3C8.o,tail9.data.o,ov_SC03_006_jr_8015AE2C.o,tail10.data.o,ov_SC03_006_jr_8015C32C.o,tail11.data.o,ov_SC03_006_jr_8016AB6C.o,tail12.data.o,ov_SC03_006_jr_801734BC.o,tail13.data.o,ov_SC03_006_jr_80178D40.o,tail14.data.o,ov_SC03_006_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_006_jr_8012ACE0.o,tail2.data.o,ov_SC03_006_jr_801380E0.o,tail3.data.o,ov_SC03_006_jr_8013F350.o,tail4.data.o,ov_SC03_006_jr_8013FFD8.o,tail5.data.o,ov_SC03_006_jr_8015444C.o,tail6.data.o,ov_SC03_006_jr_80154C24.o,tail7.data.o,ov_SC03_006_jr_801588CC.o,tail8.data.o,ov_SC03_006_jr_80159C84.o,tail9.data.o,ov_SC03_006_jr_8015A3C8.o,tail10.data.o,ov_SC03_006_jr_8015AE2C.o,tail11.data.o,ov_SC03_006_jr_8015C32C.o,tail12.data.o,ov_SC03_006_jr_8016AB6C.o,tail13.data.o,ov_SC03_006_jr_801734BC.o,tail14.data.o,ov_SC03_006_jr_80178D40.o,tail15.data.o,ov_SC03_006_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_006/ov_SC03_006_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_006/ov_SC03_006_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_006/ov_SC03_006_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -271,7 +271,7 @@ ov_SC04_000_ELF := $(ov_SC04_000_OUT).elf ov_SC04_000_MAPFILE := $(ov_SC04_000_OUT).map ov_SC04_000_LD_SCRIPT := $(ov_SC04_000_OUT).ld ov_SC04_000_SPLAT_YAML := config/splat.ov_SC04_000.yaml -ov_SC04_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_000_jr_8012ACE0.o,tail2.data.o,ov_SC04_000_jr_801380E0.o,tail3.data.o,ov_SC04_000_jr_8013F350.o,tail4.data.o,ov_SC04_000_jr_8013FFD8.o,tail5.data.o,ov_SC04_000_jr_8015444C.o,tail6.data.o,ov_SC04_000_jr_80154C24.o,tail7.data.o,ov_SC04_000_jr_80159C84.o,tail8.data.o,ov_SC04_000_jr_8015A3C8.o,tail9.data.o,ov_SC04_000_jr_8015AE2C.o,tail10.data.o,ov_SC04_000_jr_8015C32C.o,tail11.data.o,ov_SC04_000_jr_8016AB6C.o,tail12.data.o,ov_SC04_000_jr_801734BC.o,tail13.data.o,ov_SC04_000_jr_80178D40.o,tail14.data.o,ov_SC04_000_jr_8017A4AC.o,tail15.data.o,ov_SC04_000_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_000_jr_8012ACE0.o,tail2.data.o,ov_SC04_000_jr_801380E0.o,tail3.data.o,ov_SC04_000_jr_8013F350.o,tail4.data.o,ov_SC04_000_jr_8013FFD8.o,tail5.data.o,ov_SC04_000_jr_8015444C.o,tail6.data.o,ov_SC04_000_jr_80154C24.o,tail7.data.o,ov_SC04_000_jr_801588CC.o,tail8.data.o,ov_SC04_000_jr_80159C84.o,tail9.data.o,ov_SC04_000_jr_8015A3C8.o,tail10.data.o,ov_SC04_000_jr_8015AE2C.o,tail11.data.o,ov_SC04_000_jr_8015C32C.o,tail12.data.o,ov_SC04_000_jr_8016AB6C.o,tail13.data.o,ov_SC04_000_jr_801734BC.o,tail14.data.o,ov_SC04_000_jr_80178D40.o,tail15.data.o,ov_SC04_000_jr_8017A4AC.o,tail16.data.o,ov_SC04_000_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_000/ov_SC04_000_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_000/ov_SC04_000_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_000/ov_SC04_000_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -296,7 +296,7 @@ ov_SC04_018_ELF := $(ov_SC04_018_OUT).elf ov_SC04_018_MAPFILE := $(ov_SC04_018_OUT).map ov_SC04_018_LD_SCRIPT := $(ov_SC04_018_OUT).ld ov_SC04_018_SPLAT_YAML := config/splat.ov_SC04_018.yaml -ov_SC04_018_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_018_jr_8012ACE0.o,tail2.data.o,ov_SC04_018_jr_801380E0.o,tail3.data.o,ov_SC04_018_jr_8013F350.o,tail4.data.o,ov_SC04_018_jr_8013FFD8.o,tail5.data.o,ov_SC04_018_jr_8015444C.o,tail6.data.o,ov_SC04_018_jr_80154C24.o,tail7.data.o,ov_SC04_018_jr_80159C84.o,tail8.data.o,ov_SC04_018_jr_8015A3C8.o,tail9.data.o,ov_SC04_018_jr_8015AE2C.o,tail10.data.o,ov_SC04_018_jr_8015C32C.o,tail11.data.o,ov_SC04_018_jr_8016AB6C.o,tail12.data.o,ov_SC04_018_jr_801734BC.o,tail13.data.o,ov_SC04_018_jr_80178D40.o,tail14.data.o,ov_SC04_018_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_018_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_018_jr_8012ACE0.o,tail2.data.o,ov_SC04_018_jr_801380E0.o,tail3.data.o,ov_SC04_018_jr_8013F350.o,tail4.data.o,ov_SC04_018_jr_8013FFD8.o,tail5.data.o,ov_SC04_018_jr_8015444C.o,tail6.data.o,ov_SC04_018_jr_80154C24.o,tail7.data.o,ov_SC04_018_jr_801588CC.o,tail8.data.o,ov_SC04_018_jr_80159C84.o,tail9.data.o,ov_SC04_018_jr_8015A3C8.o,tail10.data.o,ov_SC04_018_jr_8015AE2C.o,tail11.data.o,ov_SC04_018_jr_8015C32C.o,tail12.data.o,ov_SC04_018_jr_8016AB6C.o,tail13.data.o,ov_SC04_018_jr_801734BC.o,tail14.data.o,ov_SC04_018_jr_80178D40.o,tail15.data.o,ov_SC04_018_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_018/ov_SC04_018_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_018/ov_SC04_018_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -321,7 +321,7 @@ ov_SC04_019_ELF := $(ov_SC04_019_OUT).elf ov_SC04_019_MAPFILE := $(ov_SC04_019_OUT).map ov_SC04_019_LD_SCRIPT := $(ov_SC04_019_OUT).ld ov_SC04_019_SPLAT_YAML := config/splat.ov_SC04_019.yaml -ov_SC04_019_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_019_jr_8012ACE0.o,tail2.data.o,ov_SC04_019_jr_801380E0.o,tail3.data.o,ov_SC04_019_jr_8013F350.o,tail4.data.o,ov_SC04_019_jr_8013FFD8.o,tail5.data.o,ov_SC04_019_jr_8015444C.o,tail6.data.o,ov_SC04_019_jr_80154C24.o,tail7.data.o,ov_SC04_019_jr_80159C84.o,tail8.data.o,ov_SC04_019_jr_8015A3C8.o,tail9.data.o,ov_SC04_019_jr_8015AE2C.o,tail10.data.o,ov_SC04_019_jr_8015C32C.o,tail11.data.o,ov_SC04_019_jr_8016AB6C.o,tail12.data.o,ov_SC04_019_jr_801734BC.o,tail13.data.o,ov_SC04_019_jr_80178D40.o,tail14.data.o,ov_SC04_019_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_019_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_019_jr_8012ACE0.o,tail2.data.o,ov_SC04_019_jr_801380E0.o,tail3.data.o,ov_SC04_019_jr_8013F350.o,tail4.data.o,ov_SC04_019_jr_8013FFD8.o,tail5.data.o,ov_SC04_019_jr_8015444C.o,tail6.data.o,ov_SC04_019_jr_80154C24.o,tail7.data.o,ov_SC04_019_jr_801588CC.o,tail8.data.o,ov_SC04_019_jr_80159C84.o,tail9.data.o,ov_SC04_019_jr_8015A3C8.o,tail10.data.o,ov_SC04_019_jr_8015AE2C.o,tail11.data.o,ov_SC04_019_jr_8015C32C.o,tail12.data.o,ov_SC04_019_jr_8016AB6C.o,tail13.data.o,ov_SC04_019_jr_801734BC.o,tail14.data.o,ov_SC04_019_jr_80178D40.o,tail15.data.o,ov_SC04_019_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_019/ov_SC04_019_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_019/ov_SC04_019_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_019/ov_SC04_019_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -346,7 +346,7 @@ ov_SC05_000_ELF := $(ov_SC05_000_OUT).elf ov_SC05_000_MAPFILE := $(ov_SC05_000_OUT).map ov_SC05_000_LD_SCRIPT := $(ov_SC05_000_OUT).ld ov_SC05_000_SPLAT_YAML := config/splat.ov_SC05_000.yaml -ov_SC05_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_000_jr_8012ACE0.o,tail2.data.o,ov_SC05_000_jr_801380E0.o,tail3.data.o,ov_SC05_000_jr_8013F350.o,tail4.data.o,ov_SC05_000_jr_8013FFD8.o,tail5.data.o,ov_SC05_000_jr_8015444C.o,tail6.data.o,ov_SC05_000_jr_80154C24.o,tail7.data.o,ov_SC05_000_jr_80159C84.o,tail8.data.o,ov_SC05_000_jr_8015A3C8.o,tail9.data.o,ov_SC05_000_jr_8015AE2C.o,tail10.data.o,ov_SC05_000_jr_8015C32C.o,tail11.data.o,ov_SC05_000_jr_8016AB6C.o,tail12.data.o,ov_SC05_000_jr_801734BC.o,tail13.data.o,ov_SC05_000_jr_80178D40.o,tail14.data.o,ov_SC05_000_jr_8017A4AC.o,tail15.data.o,ov_SC05_000_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_000_jr_8012ACE0.o,tail2.data.o,ov_SC05_000_jr_801380E0.o,tail3.data.o,ov_SC05_000_jr_8013F350.o,tail4.data.o,ov_SC05_000_jr_8013FFD8.o,tail5.data.o,ov_SC05_000_jr_8015444C.o,tail6.data.o,ov_SC05_000_jr_80154C24.o,tail7.data.o,ov_SC05_000_jr_801588CC.o,tail8.data.o,ov_SC05_000_jr_80159C84.o,tail9.data.o,ov_SC05_000_jr_8015A3C8.o,tail10.data.o,ov_SC05_000_jr_8015AE2C.o,tail11.data.o,ov_SC05_000_jr_8015C32C.o,tail12.data.o,ov_SC05_000_jr_8016AB6C.o,tail13.data.o,ov_SC05_000_jr_801734BC.o,tail14.data.o,ov_SC05_000_jr_80178D40.o,tail15.data.o,ov_SC05_000_jr_8017A4AC.o,tail16.data.o,ov_SC05_000_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_000/ov_SC05_000_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_000/ov_SC05_000_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_000/ov_SC05_000_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -371,7 +371,7 @@ ov_SC06_000_ELF := $(ov_SC06_000_OUT).elf ov_SC06_000_MAPFILE := $(ov_SC06_000_OUT).map ov_SC06_000_LD_SCRIPT := $(ov_SC06_000_OUT).ld ov_SC06_000_SPLAT_YAML := config/splat.ov_SC06_000.yaml -ov_SC06_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_000_jr_8012ACE0.o,tail2.data.o,ov_SC06_000_jr_801380E0.o,tail3.data.o,ov_SC06_000_jr_8013F350.o,tail4.data.o,ov_SC06_000_jr_8015444C.o,tail5.data.o,ov_SC06_000_jr_80154C24.o,tail6.data.o,ov_SC06_000_jr_80159C84.o,tail7.data.o,ov_SC06_000_jr_8015A3C8.o,tail8.data.o,ov_SC06_000_jr_8015AE2C.o,tail9.data.o,ov_SC06_000_jr_8015C32C.o,tail10.data.o,ov_SC06_000_jr_8016AB6C.o,tail11.data.o,ov_SC06_000_jr_801734BC.o,tail12.data.o,ov_SC06_000_jr_80178D40.o,tail13.data.o,ov_SC06_000_jr_8017A4AC.o,tail14.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_000_jr_8012ACE0.o,tail2.data.o,ov_SC06_000_jr_801380E0.o,tail3.data.o,ov_SC06_000_jr_8013F350.o,tail4.data.o,ov_SC06_000_jr_8015444C.o,tail5.data.o,ov_SC06_000_jr_80154C24.o,tail6.data.o,ov_SC06_000_jr_801588CC.o,tail7.data.o,ov_SC06_000_jr_80159C84.o,tail8.data.o,ov_SC06_000_jr_8015A3C8.o,tail9.data.o,ov_SC06_000_jr_8015AE2C.o,tail10.data.o,ov_SC06_000_jr_8015C32C.o,tail11.data.o,ov_SC06_000_jr_8016AB6C.o,tail12.data.o,ov_SC06_000_jr_801734BC.o,tail13.data.o,ov_SC06_000_jr_80178D40.o,tail14.data.o,ov_SC06_000_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_000/ov_SC06_000_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_000/ov_SC06_000_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_000/ov_SC06_000_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -396,7 +396,7 @@ ov_SC07_000_ELF := $(ov_SC07_000_OUT).elf ov_SC07_000_MAPFILE := $(ov_SC07_000_OUT).map ov_SC07_000_LD_SCRIPT := $(ov_SC07_000_OUT).ld ov_SC07_000_SPLAT_YAML := config/splat.ov_SC07_000.yaml -ov_SC07_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_000_jr_8012ACE0.o,tail2.data.o,ov_SC07_000_jr_801380E0.o,tail3.data.o,ov_SC07_000_jr_8013F350.o,tail4.data.o,ov_SC07_000_jr_8013FFD8.o,tail5.data.o,ov_SC07_000_jr_8015444C.o,tail6.data.o,ov_SC07_000_jr_80154C24.o,tail7.data.o,ov_SC07_000_jr_80159C84.o,tail8.data.o,ov_SC07_000_jr_8015A3C8.o,tail9.data.o,ov_SC07_000_jr_8015AE2C.o,tail10.data.o,ov_SC07_000_jr_8015C32C.o,tail11.data.o,ov_SC07_000_jr_8016AB6C.o,tail12.data.o,ov_SC07_000_jr_801734BC.o,tail13.data.o,ov_SC07_000_jr_80178D40.o,tail14.data.o,ov_SC07_000_jr_8017A4AC.o,tail15.data.o,ov_SC07_000_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_000_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_000_jr_8012ACE0.o,tail2.data.o,ov_SC07_000_jr_801380E0.o,tail3.data.o,ov_SC07_000_jr_8013F350.o,tail4.data.o,ov_SC07_000_jr_8013FFD8.o,tail5.data.o,ov_SC07_000_jr_8015444C.o,tail6.data.o,ov_SC07_000_jr_80154C24.o,tail7.data.o,ov_SC07_000_jr_801588CC.o,tail8.data.o,ov_SC07_000_jr_80159C84.o,tail9.data.o,ov_SC07_000_jr_8015A3C8.o,tail10.data.o,ov_SC07_000_jr_8015AE2C.o,tail11.data.o,ov_SC07_000_jr_8015C32C.o,tail12.data.o,ov_SC07_000_jr_8016AB6C.o,tail13.data.o,ov_SC07_000_jr_801734BC.o,tail14.data.o,ov_SC07_000_jr_80178D40.o,tail15.data.o,ov_SC07_000_jr_8017A4AC.o,tail16.data.o,ov_SC07_000_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_000/ov_SC07_000_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC07_000/ov_SC07_000_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_000/ov_SC07_000_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -421,7 +421,7 @@ ov_SC01_004_ELF := $(ov_SC01_004_OUT).elf ov_SC01_004_MAPFILE := $(ov_SC01_004_OUT).map ov_SC01_004_LD_SCRIPT := $(ov_SC01_004_OUT).ld ov_SC01_004_SPLAT_YAML := config/splat.ov_SC01_004.yaml -ov_SC01_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_004_jr_8012ACE0.o,tail2.data.o,ov_SC01_004_jr_801380E0.o,tail3.data.o,ov_SC01_004_jr_8013F350.o,tail4.data.o,ov_SC01_004_jr_8013FFD8.o,tail5.data.o,ov_SC01_004_jr_8015444C.o,tail6.data.o,ov_SC01_004_jr_80154C24.o,tail7.data.o,ov_SC01_004_jr_80159C84.o,tail8.data.o,ov_SC01_004_jr_8015A3C8.o,tail9.data.o,ov_SC01_004_jr_8015AE2C.o,tail10.data.o,ov_SC01_004_jr_8015C32C.o,tail11.data.o,ov_SC01_004_jr_8016AB6C.o,tail12.data.o,ov_SC01_004_jr_801734BC.o,tail13.data.o,ov_SC01_004_jr_80178D40.o,tail14.data.o,ov_SC01_004_jr_8017A4AC.o,tail15.data.o,ov_SC01_004_jr_8017BE9C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_004_jr_8012ACE0.o,tail2.data.o,ov_SC01_004_jr_801380E0.o,tail3.data.o,ov_SC01_004_jr_8013F350.o,tail4.data.o,ov_SC01_004_jr_8013FFD8.o,tail5.data.o,ov_SC01_004_jr_8015444C.o,tail6.data.o,ov_SC01_004_jr_80154C24.o,tail7.data.o,ov_SC01_004_jr_801588CC.o,tail8.data.o,ov_SC01_004_jr_80159C84.o,tail9.data.o,ov_SC01_004_jr_8015A3C8.o,tail10.data.o,ov_SC01_004_jr_8015AE2C.o,tail11.data.o,ov_SC01_004_jr_8015C32C.o,tail12.data.o,ov_SC01_004_jr_8016AB6C.o,tail13.data.o,ov_SC01_004_jr_801734BC.o,tail14.data.o,ov_SC01_004_jr_80178D40.o,tail15.data.o,ov_SC01_004_jr_8017A4AC.o,tail16.data.o,ov_SC01_004_jr_8017BE9C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_004/ov_SC01_004_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_004/ov_SC01_004_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_004/ov_SC01_004_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -446,7 +446,7 @@ ov_SC01_008_ELF := $(ov_SC01_008_OUT).elf ov_SC01_008_MAPFILE := $(ov_SC01_008_OUT).map ov_SC01_008_LD_SCRIPT := $(ov_SC01_008_OUT).ld ov_SC01_008_SPLAT_YAML := config/splat.ov_SC01_008.yaml -ov_SC01_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_008_jr_8012ACE0.o,tail2.data.o,ov_SC01_008_jr_801380E0.o,tail3.data.o,ov_SC01_008_jr_8013F350.o,tail4.data.o,ov_SC01_008_jr_8013FFD8.o,tail5.data.o,ov_SC01_008_jr_8015444C.o,tail6.data.o,ov_SC01_008_jr_80154C24.o,tail7.data.o,ov_SC01_008_jr_80159C84.o,tail8.data.o,ov_SC01_008_jr_8015A3C8.o,tail9.data.o,ov_SC01_008_jr_8015AE2C.o,tail10.data.o,ov_SC01_008_jr_8015C32C.o,tail11.data.o,ov_SC01_008_jr_8016AB6C.o,tail12.data.o,ov_SC01_008_jr_801734BC.o,tail13.data.o,ov_SC01_008_jr_80178D40.o,tail14.data.o,ov_SC01_008_jr_8017A4AC.o,tail15.data.o,ov_SC01_008_jr_8017BE9C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_008_jr_8012ACE0.o,tail2.data.o,ov_SC01_008_jr_801380E0.o,tail3.data.o,ov_SC01_008_jr_8013F350.o,tail4.data.o,ov_SC01_008_jr_8013FFD8.o,tail5.data.o,ov_SC01_008_jr_8015444C.o,tail6.data.o,ov_SC01_008_jr_80154C24.o,tail7.data.o,ov_SC01_008_jr_801588CC.o,tail8.data.o,ov_SC01_008_jr_80159C84.o,tail9.data.o,ov_SC01_008_jr_8015A3C8.o,tail10.data.o,ov_SC01_008_jr_8015AE2C.o,tail11.data.o,ov_SC01_008_jr_8015C32C.o,tail12.data.o,ov_SC01_008_jr_8016AB6C.o,tail13.data.o,ov_SC01_008_jr_801734BC.o,tail14.data.o,ov_SC01_008_jr_80178D40.o,tail15.data.o,ov_SC01_008_jr_8017A4AC.o,tail16.data.o,ov_SC01_008_jr_8017BE9C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_008/ov_SC01_008_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_008/ov_SC01_008_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_008/ov_SC01_008_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -471,7 +471,7 @@ ov_SC01_009_ELF := $(ov_SC01_009_OUT).elf ov_SC01_009_MAPFILE := $(ov_SC01_009_OUT).map ov_SC01_009_LD_SCRIPT := $(ov_SC01_009_OUT).ld ov_SC01_009_SPLAT_YAML := config/splat.ov_SC01_009.yaml -ov_SC01_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_009_jr_8012ACE0.o,tail2.data.o,ov_SC01_009_jr_801380E0.o,tail3.data.o,ov_SC01_009_jr_8013F350.o,tail4.data.o,ov_SC01_009_jr_8013FFD8.o,tail5.data.o,ov_SC01_009_jr_8015444C.o,tail6.data.o,ov_SC01_009_jr_80154C24.o,tail7.data.o,ov_SC01_009_jr_80159C84.o,tail8.data.o,ov_SC01_009_jr_8015A3C8.o,tail9.data.o,ov_SC01_009_jr_8015AE2C.o,tail10.data.o,ov_SC01_009_jr_8015C32C.o,tail11.data.o,ov_SC01_009_jr_8016AB6C.o,tail12.data.o,ov_SC01_009_jr_801734BC.o,tail13.data.o,ov_SC01_009_jr_80178D40.o,tail14.data.o,ov_SC01_009_jr_8017A4AC.o,tail15.data.o,ov_SC01_009_jr_8017BE9C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_009_jr_8012ACE0.o,tail2.data.o,ov_SC01_009_jr_801380E0.o,tail3.data.o,ov_SC01_009_jr_8013F350.o,tail4.data.o,ov_SC01_009_jr_8013FFD8.o,tail5.data.o,ov_SC01_009_jr_8015444C.o,tail6.data.o,ov_SC01_009_jr_80154C24.o,tail7.data.o,ov_SC01_009_jr_801588CC.o,tail8.data.o,ov_SC01_009_jr_80159C84.o,tail9.data.o,ov_SC01_009_jr_8015A3C8.o,tail10.data.o,ov_SC01_009_jr_8015AE2C.o,tail11.data.o,ov_SC01_009_jr_8015C32C.o,tail12.data.o,ov_SC01_009_jr_8016AB6C.o,tail13.data.o,ov_SC01_009_jr_801734BC.o,tail14.data.o,ov_SC01_009_jr_80178D40.o,tail15.data.o,ov_SC01_009_jr_8017A4AC.o,tail16.data.o,ov_SC01_009_jr_8017BE9C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_009/ov_SC01_009_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_009/ov_SC01_009_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_009/ov_SC01_009_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -496,7 +496,7 @@ ov_SC01_074_ELF := $(ov_SC01_074_OUT).elf ov_SC01_074_MAPFILE := $(ov_SC01_074_OUT).map ov_SC01_074_LD_SCRIPT := $(ov_SC01_074_OUT).ld ov_SC01_074_SPLAT_YAML := config/splat.ov_SC01_074.yaml -ov_SC01_074_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_074_jr_8012ACE0.o,tail2.data.o,ov_SC01_074_jr_801380E0.o,tail3.data.o,ov_SC01_074_jr_8013F350.o,tail4.data.o,ov_SC01_074_jr_8013FFD8.o,tail5.data.o,ov_SC01_074_jr_8015444C.o,tail6.data.o,ov_SC01_074_jr_80154C24.o,tail7.data.o,ov_SC01_074_jr_80159C84.o,tail8.data.o,ov_SC01_074_jr_8015A3C8.o,tail9.data.o,ov_SC01_074_jr_8015AE2C.o,tail10.data.o,ov_SC01_074_jr_8015C32C.o,tail11.data.o,ov_SC01_074_jr_8016AB6C.o,tail12.data.o,ov_SC01_074_jr_801734BC.o,tail13.data.o,ov_SC01_074_jr_80178D40.o,tail14.data.o,ov_SC01_074_jr_8017A4AC.o,tail15.data.o,ov_SC01_074_jr_8017BE9C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_074_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_074_jr_8012ACE0.o,tail2.data.o,ov_SC01_074_jr_801380E0.o,tail3.data.o,ov_SC01_074_jr_8013F350.o,tail4.data.o,ov_SC01_074_jr_8013FFD8.o,tail5.data.o,ov_SC01_074_jr_8015444C.o,tail6.data.o,ov_SC01_074_jr_80154C24.o,tail7.data.o,ov_SC01_074_jr_801588CC.o,tail8.data.o,ov_SC01_074_jr_80159C84.o,tail9.data.o,ov_SC01_074_jr_8015A3C8.o,tail10.data.o,ov_SC01_074_jr_8015AE2C.o,tail11.data.o,ov_SC01_074_jr_8015C32C.o,tail12.data.o,ov_SC01_074_jr_8016AB6C.o,tail13.data.o,ov_SC01_074_jr_801734BC.o,tail14.data.o,ov_SC01_074_jr_80178D40.o,tail15.data.o,ov_SC01_074_jr_8017A4AC.o,tail16.data.o,ov_SC01_074_jr_8017BE9C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_074/ov_SC01_074_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_074/ov_SC01_074_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_074/ov_SC01_074_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -521,7 +521,7 @@ ov_SC01_080_ELF := $(ov_SC01_080_OUT).elf ov_SC01_080_MAPFILE := $(ov_SC01_080_OUT).map ov_SC01_080_LD_SCRIPT := $(ov_SC01_080_OUT).ld ov_SC01_080_SPLAT_YAML := config/splat.ov_SC01_080.yaml -ov_SC01_080_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_080_jr_8012ACE0.o,tail2.data.o,ov_SC01_080_jr_801380E0.o,tail3.data.o,ov_SC01_080_jr_8013F350.o,tail4.data.o,ov_SC01_080_jr_8013FFD8.o,tail5.data.o,ov_SC01_080_jr_8015444C.o,tail6.data.o,ov_SC01_080_jr_80154C24.o,tail7.data.o,ov_SC01_080_jr_80159C84.o,tail8.data.o,ov_SC01_080_jr_8015A3C8.o,tail9.data.o,ov_SC01_080_jr_8015AE2C.o,tail10.data.o,ov_SC01_080_jr_8015C32C.o,tail11.data.o,ov_SC01_080_jr_8016AB6C.o,tail12.data.o,ov_SC01_080_jr_801734BC.o,tail13.data.o,ov_SC01_080_jr_80178D40.o,tail14.data.o,ov_SC01_080_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_080_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_080_jr_8012ACE0.o,tail2.data.o,ov_SC01_080_jr_801380E0.o,tail3.data.o,ov_SC01_080_jr_8013F350.o,tail4.data.o,ov_SC01_080_jr_8013FFD8.o,tail5.data.o,ov_SC01_080_jr_8015444C.o,tail6.data.o,ov_SC01_080_jr_80154C24.o,tail7.data.o,ov_SC01_080_jr_801588CC.o,tail8.data.o,ov_SC01_080_jr_80159C84.o,tail9.data.o,ov_SC01_080_jr_8015A3C8.o,tail10.data.o,ov_SC01_080_jr_8015AE2C.o,tail11.data.o,ov_SC01_080_jr_8015C32C.o,tail12.data.o,ov_SC01_080_jr_8016AB6C.o,tail13.data.o,ov_SC01_080_jr_801734BC.o,tail14.data.o,ov_SC01_080_jr_80178D40.o,tail15.data.o,ov_SC01_080_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_080/ov_SC01_080_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_080/ov_SC01_080_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_080/ov_SC01_080_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -546,7 +546,7 @@ ov_SC01_084_ELF := $(ov_SC01_084_OUT).elf ov_SC01_084_MAPFILE := $(ov_SC01_084_OUT).map ov_SC01_084_LD_SCRIPT := $(ov_SC01_084_OUT).ld ov_SC01_084_SPLAT_YAML := config/splat.ov_SC01_084.yaml -ov_SC01_084_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_084_jr_8012ACE0.o,tail2.data.o,ov_SC01_084_jr_801380E0.o,tail3.data.o,ov_SC01_084_jr_8013F350.o,tail4.data.o,ov_SC01_084_jr_8013FFD8.o,tail5.data.o,ov_SC01_084_jr_8015444C.o,tail6.data.o,ov_SC01_084_jr_80154C24.o,tail7.data.o,ov_SC01_084_jr_80159C84.o,tail8.data.o,ov_SC01_084_jr_8015A3C8.o,tail9.data.o,ov_SC01_084_jr_8015AE2C.o,tail10.data.o,ov_SC01_084_jr_8015C32C.o,tail11.data.o,ov_SC01_084_jr_8016AB6C.o,tail12.data.o,ov_SC01_084_jr_801734BC.o,tail13.data.o,ov_SC01_084_jr_80178D40.o,tail14.data.o,ov_SC01_084_jr_8017A4AC.o,tail15.data.o,ov_SC01_084_jr_8017CA80.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC01_084_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_084_jr_8012ACE0.o,tail2.data.o,ov_SC01_084_jr_801380E0.o,tail3.data.o,ov_SC01_084_jr_8013F350.o,tail4.data.o,ov_SC01_084_jr_8013FFD8.o,tail5.data.o,ov_SC01_084_jr_8015444C.o,tail6.data.o,ov_SC01_084_jr_80154C24.o,tail7.data.o,ov_SC01_084_jr_801588CC.o,tail8.data.o,ov_SC01_084_jr_80159C84.o,tail9.data.o,ov_SC01_084_jr_8015A3C8.o,tail10.data.o,ov_SC01_084_jr_8015AE2C.o,tail11.data.o,ov_SC01_084_jr_8015C32C.o,tail12.data.o,ov_SC01_084_jr_8016AB6C.o,tail13.data.o,ov_SC01_084_jr_801734BC.o,tail14.data.o,ov_SC01_084_jr_80178D40.o,tail15.data.o,ov_SC01_084_jr_8017A4AC.o,tail16.data.o,ov_SC01_084_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC01_084/ov_SC01_084_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC01_084/ov_SC01_084_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_084/ov_SC01_084_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -571,7 +571,7 @@ ov_SC02_004_ELF := $(ov_SC02_004_OUT).elf ov_SC02_004_MAPFILE := $(ov_SC02_004_OUT).map ov_SC02_004_LD_SCRIPT := $(ov_SC02_004_OUT).ld ov_SC02_004_SPLAT_YAML := config/splat.ov_SC02_004.yaml -ov_SC02_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_004_jr_8012ACE0.o,tail2.data.o,ov_SC02_004_jr_801380E0.o,tail3.data.o,ov_SC02_004_jr_8013F350.o,tail4.data.o,ov_SC02_004_jr_8013FFD8.o,tail5.data.o,ov_SC02_004_jr_8015444C.o,tail6.data.o,ov_SC02_004_jr_80154C24.o,tail7.data.o,ov_SC02_004_jr_80159C84.o,tail8.data.o,ov_SC02_004_jr_8015A3C8.o,tail9.data.o,ov_SC02_004_jr_8015AE2C.o,tail10.data.o,ov_SC02_004_jr_8015C32C.o,tail11.data.o,ov_SC02_004_jr_8016AB6C.o,tail12.data.o,ov_SC02_004_jr_801734BC.o,tail13.data.o,ov_SC02_004_jr_80178D40.o,tail14.data.o,ov_SC02_004_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_004_jr_8012ACE0.o,tail2.data.o,ov_SC02_004_jr_801380E0.o,tail3.data.o,ov_SC02_004_jr_8013F350.o,tail4.data.o,ov_SC02_004_jr_8013FFD8.o,tail5.data.o,ov_SC02_004_jr_8015444C.o,tail6.data.o,ov_SC02_004_jr_80154C24.o,tail7.data.o,ov_SC02_004_jr_801588CC.o,tail8.data.o,ov_SC02_004_jr_80159C84.o,tail9.data.o,ov_SC02_004_jr_8015A3C8.o,tail10.data.o,ov_SC02_004_jr_8015AE2C.o,tail11.data.o,ov_SC02_004_jr_8015C32C.o,tail12.data.o,ov_SC02_004_jr_8016AB6C.o,tail13.data.o,ov_SC02_004_jr_801734BC.o,tail14.data.o,ov_SC02_004_jr_80178D40.o,tail15.data.o,ov_SC02_004_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_004/ov_SC02_004_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_004/ov_SC02_004_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_004/ov_SC02_004_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -596,7 +596,7 @@ ov_SC02_005_ELF := $(ov_SC02_005_OUT).elf ov_SC02_005_MAPFILE := $(ov_SC02_005_OUT).map ov_SC02_005_LD_SCRIPT := $(ov_SC02_005_OUT).ld ov_SC02_005_SPLAT_YAML := config/splat.ov_SC02_005.yaml -ov_SC02_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_005_jr_8012ACE0.o,tail2.data.o,ov_SC02_005_jr_801380E0.o,tail3.data.o,ov_SC02_005_jr_8013F350.o,tail4.data.o,ov_SC02_005_jr_8013FFD8.o,tail5.data.o,ov_SC02_005_jr_8015444C.o,tail6.data.o,ov_SC02_005_jr_80154C24.o,tail7.data.o,ov_SC02_005_jr_80159C84.o,tail8.data.o,ov_SC02_005_jr_8015A3C8.o,tail9.data.o,ov_SC02_005_jr_8015AE2C.o,tail10.data.o,ov_SC02_005_jr_8015C32C.o,tail11.data.o,ov_SC02_005_jr_8016AB6C.o,tail12.data.o,ov_SC02_005_jr_801734BC.o,tail13.data.o,ov_SC02_005_jr_80178D40.o,tail14.data.o,ov_SC02_005_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_005_jr_8012ACE0.o,tail2.data.o,ov_SC02_005_jr_801380E0.o,tail3.data.o,ov_SC02_005_jr_8013F350.o,tail4.data.o,ov_SC02_005_jr_8013FFD8.o,tail5.data.o,ov_SC02_005_jr_8015444C.o,tail6.data.o,ov_SC02_005_jr_80154C24.o,tail7.data.o,ov_SC02_005_jr_801588CC.o,tail8.data.o,ov_SC02_005_jr_80159C84.o,tail9.data.o,ov_SC02_005_jr_8015A3C8.o,tail10.data.o,ov_SC02_005_jr_8015AE2C.o,tail11.data.o,ov_SC02_005_jr_8015C32C.o,tail12.data.o,ov_SC02_005_jr_8016AB6C.o,tail13.data.o,ov_SC02_005_jr_801734BC.o,tail14.data.o,ov_SC02_005_jr_80178D40.o,tail15.data.o,ov_SC02_005_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_005/ov_SC02_005_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_005/ov_SC02_005_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_005/ov_SC02_005_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -621,7 +621,7 @@ ov_SC02_011_ELF := $(ov_SC02_011_OUT).elf ov_SC02_011_MAPFILE := $(ov_SC02_011_OUT).map ov_SC02_011_LD_SCRIPT := $(ov_SC02_011_OUT).ld ov_SC02_011_SPLAT_YAML := config/splat.ov_SC02_011.yaml -ov_SC02_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_011_jr_8012ACE0.o,tail2.data.o,ov_SC02_011_jr_801380E0.o,tail3.data.o,ov_SC02_011_jr_8013F350.o,tail4.data.o,ov_SC02_011_jr_8013FFD8.o,tail5.data.o,ov_SC02_011_jr_8015444C.o,tail6.data.o,ov_SC02_011_jr_80154C24.o,tail7.data.o,ov_SC02_011_jr_80159C84.o,tail8.data.o,ov_SC02_011_jr_8015A3C8.o,tail9.data.o,ov_SC02_011_jr_8015AE2C.o,tail10.data.o,ov_SC02_011_jr_8015C32C.o,tail11.data.o,ov_SC02_011_jr_8016AB6C.o,tail12.data.o,ov_SC02_011_jr_801734BC.o,tail13.data.o,ov_SC02_011_jr_80178D40.o,tail14.data.o,ov_SC02_011_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_011_jr_8012ACE0.o,tail2.data.o,ov_SC02_011_jr_801380E0.o,tail3.data.o,ov_SC02_011_jr_8013F350.o,tail4.data.o,ov_SC02_011_jr_8013FFD8.o,tail5.data.o,ov_SC02_011_jr_8015444C.o,tail6.data.o,ov_SC02_011_jr_80154C24.o,tail7.data.o,ov_SC02_011_jr_801588CC.o,tail8.data.o,ov_SC02_011_jr_80159C84.o,tail9.data.o,ov_SC02_011_jr_8015A3C8.o,tail10.data.o,ov_SC02_011_jr_8015AE2C.o,tail11.data.o,ov_SC02_011_jr_8015C32C.o,tail12.data.o,ov_SC02_011_jr_8016AB6C.o,tail13.data.o,ov_SC02_011_jr_801734BC.o,tail14.data.o,ov_SC02_011_jr_80178D40.o,tail15.data.o,ov_SC02_011_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_011/ov_SC02_011_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_011/ov_SC02_011_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_011/ov_SC02_011_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -646,7 +646,7 @@ ov_SC02_015_ELF := $(ov_SC02_015_OUT).elf ov_SC02_015_MAPFILE := $(ov_SC02_015_OUT).map ov_SC02_015_LD_SCRIPT := $(ov_SC02_015_OUT).ld ov_SC02_015_SPLAT_YAML := config/splat.ov_SC02_015.yaml -ov_SC02_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_015_jr_8012ACE0.o,tail2.data.o,ov_SC02_015_jr_801380E0.o,tail3.data.o,ov_SC02_015_jr_8013F350.o,tail4.data.o,ov_SC02_015_jr_8013FFD8.o,tail5.data.o,ov_SC02_015_jr_8015444C.o,tail6.data.o,ov_SC02_015_jr_80154C24.o,tail7.data.o,ov_SC02_015_jr_80159C84.o,tail8.data.o,ov_SC02_015_jr_8015A3C8.o,tail9.data.o,ov_SC02_015_jr_8015AE2C.o,tail10.data.o,ov_SC02_015_jr_8015C32C.o,tail11.data.o,ov_SC02_015_jr_8016AB6C.o,tail12.data.o,ov_SC02_015_jr_801734BC.o,tail13.data.o,ov_SC02_015_jr_80178D40.o,tail14.data.o,ov_SC02_015_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_015_jr_8012ACE0.o,tail2.data.o,ov_SC02_015_jr_801380E0.o,tail3.data.o,ov_SC02_015_jr_8013F350.o,tail4.data.o,ov_SC02_015_jr_8013FFD8.o,tail5.data.o,ov_SC02_015_jr_8015444C.o,tail6.data.o,ov_SC02_015_jr_80154C24.o,tail7.data.o,ov_SC02_015_jr_801588CC.o,tail8.data.o,ov_SC02_015_jr_80159C84.o,tail9.data.o,ov_SC02_015_jr_8015A3C8.o,tail10.data.o,ov_SC02_015_jr_8015AE2C.o,tail11.data.o,ov_SC02_015_jr_8015C32C.o,tail12.data.o,ov_SC02_015_jr_8016AB6C.o,tail13.data.o,ov_SC02_015_jr_801734BC.o,tail14.data.o,ov_SC02_015_jr_80178D40.o,tail15.data.o,ov_SC02_015_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_015/ov_SC02_015_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_015/ov_SC02_015_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_015/ov_SC02_015_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -671,7 +671,7 @@ ov_SC02_016_ELF := $(ov_SC02_016_OUT).elf ov_SC02_016_MAPFILE := $(ov_SC02_016_OUT).map ov_SC02_016_LD_SCRIPT := $(ov_SC02_016_OUT).ld ov_SC02_016_SPLAT_YAML := config/splat.ov_SC02_016.yaml -ov_SC02_016_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_016_jr_8012ACE0.o,tail2.data.o,ov_SC02_016_jr_801380E0.o,tail3.data.o,ov_SC02_016_jr_8013F350.o,tail4.data.o,ov_SC02_016_jr_8013FFD8.o,tail5.data.o,ov_SC02_016_jr_8015444C.o,tail6.data.o,ov_SC02_016_jr_80154C24.o,tail7.data.o,ov_SC02_016_jr_80159C84.o,tail8.data.o,ov_SC02_016_jr_8015A3C8.o,tail9.data.o,ov_SC02_016_jr_8015AE2C.o,tail10.data.o,ov_SC02_016_jr_8015C32C.o,tail11.data.o,ov_SC02_016_jr_8016AB6C.o,tail12.data.o,ov_SC02_016_jr_801734BC.o,tail13.data.o,ov_SC02_016_jr_80178D40.o,tail14.data.o,ov_SC02_016_jr_8017A4AC.o,tail15.data.o,ov_SC02_016_jr_8017DC70.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_016_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_016_jr_8012ACE0.o,tail2.data.o,ov_SC02_016_jr_801380E0.o,tail3.data.o,ov_SC02_016_jr_8013F350.o,tail4.data.o,ov_SC02_016_jr_8013FFD8.o,tail5.data.o,ov_SC02_016_jr_8015444C.o,tail6.data.o,ov_SC02_016_jr_80154C24.o,tail7.data.o,ov_SC02_016_jr_801588CC.o,tail8.data.o,ov_SC02_016_jr_80159C84.o,tail9.data.o,ov_SC02_016_jr_8015A3C8.o,tail10.data.o,ov_SC02_016_jr_8015AE2C.o,tail11.data.o,ov_SC02_016_jr_8015C32C.o,tail12.data.o,ov_SC02_016_jr_8016AB6C.o,tail13.data.o,ov_SC02_016_jr_801734BC.o,tail14.data.o,ov_SC02_016_jr_80178D40.o,tail15.data.o,ov_SC02_016_jr_8017A4AC.o,tail16.data.o,ov_SC02_016_jr_8017DC70.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_016/ov_SC02_016_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_016/ov_SC02_016_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_016/ov_SC02_016_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -696,7 +696,7 @@ ov_SC02_017_ELF := $(ov_SC02_017_OUT).elf ov_SC02_017_MAPFILE := $(ov_SC02_017_OUT).map ov_SC02_017_LD_SCRIPT := $(ov_SC02_017_OUT).ld ov_SC02_017_SPLAT_YAML := config/splat.ov_SC02_017.yaml -ov_SC02_017_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_017_jr_8012ACE0.o,tail2.data.o,ov_SC02_017_jr_801380E0.o,tail3.data.o,ov_SC02_017_jr_8013F350.o,tail4.data.o,ov_SC02_017_jr_8013FFD8.o,tail5.data.o,ov_SC02_017_jr_8015444C.o,tail6.data.o,ov_SC02_017_jr_80154C24.o,tail7.data.o,ov_SC02_017_jr_80159C84.o,tail8.data.o,ov_SC02_017_jr_8015A3C8.o,tail9.data.o,ov_SC02_017_jr_8015AE2C.o,tail10.data.o,ov_SC02_017_jr_8015C32C.o,tail11.data.o,ov_SC02_017_jr_8016AB6C.o,tail12.data.o,ov_SC02_017_jr_801734BC.o,tail13.data.o,ov_SC02_017_jr_80178D40.o,tail14.data.o,ov_SC02_017_jr_8017A4AC.o,tail15.data.o,ov_SC02_017_jr_8017DF34.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_017_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_017_jr_8012ACE0.o,tail2.data.o,ov_SC02_017_jr_801380E0.o,tail3.data.o,ov_SC02_017_jr_8013F350.o,tail4.data.o,ov_SC02_017_jr_8013FFD8.o,tail5.data.o,ov_SC02_017_jr_8015444C.o,tail6.data.o,ov_SC02_017_jr_80154C24.o,tail7.data.o,ov_SC02_017_jr_801588CC.o,tail8.data.o,ov_SC02_017_jr_80159C84.o,tail9.data.o,ov_SC02_017_jr_8015A3C8.o,tail10.data.o,ov_SC02_017_jr_8015AE2C.o,tail11.data.o,ov_SC02_017_jr_8015C32C.o,tail12.data.o,ov_SC02_017_jr_8016AB6C.o,tail13.data.o,ov_SC02_017_jr_801734BC.o,tail14.data.o,ov_SC02_017_jr_80178D40.o,tail15.data.o,ov_SC02_017_jr_8017A4AC.o,tail16.data.o,ov_SC02_017_jr_8017DF34.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_017/ov_SC02_017_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_017/ov_SC02_017_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_017/ov_SC02_017_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -721,7 +721,7 @@ ov_SC02_021_ELF := $(ov_SC02_021_OUT).elf ov_SC02_021_MAPFILE := $(ov_SC02_021_OUT).map ov_SC02_021_LD_SCRIPT := $(ov_SC02_021_OUT).ld ov_SC02_021_SPLAT_YAML := config/splat.ov_SC02_021.yaml -ov_SC02_021_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_021_jr_8012ACE0.o,tail2.data.o,ov_SC02_021_jr_801380E0.o,tail3.data.o,ov_SC02_021_jr_8013F350.o,tail4.data.o,ov_SC02_021_jr_8013FFD8.o,tail5.data.o,ov_SC02_021_jr_8015444C.o,tail6.data.o,ov_SC02_021_jr_80154C24.o,tail7.data.o,ov_SC02_021_jr_80159C84.o,tail8.data.o,ov_SC02_021_jr_8015A3C8.o,tail9.data.o,ov_SC02_021_jr_8015AE2C.o,tail10.data.o,ov_SC02_021_jr_8015C32C.o,tail11.data.o,ov_SC02_021_jr_8016AB6C.o,tail12.data.o,ov_SC02_021_jr_801734BC.o,tail13.data.o,ov_SC02_021_jr_80178D40.o,tail14.data.o,ov_SC02_021_jr_8017A4AC.o,tail15.data.o,ov_SC02_021_jr_8017C294.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_021_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_021_jr_8012ACE0.o,tail2.data.o,ov_SC02_021_jr_801380E0.o,tail3.data.o,ov_SC02_021_jr_8013F350.o,tail4.data.o,ov_SC02_021_jr_8013FFD8.o,tail5.data.o,ov_SC02_021_jr_8015444C.o,tail6.data.o,ov_SC02_021_jr_80154C24.o,tail7.data.o,ov_SC02_021_jr_801588CC.o,tail8.data.o,ov_SC02_021_jr_80159C84.o,tail9.data.o,ov_SC02_021_jr_8015A3C8.o,tail10.data.o,ov_SC02_021_jr_8015AE2C.o,tail11.data.o,ov_SC02_021_jr_8015C32C.o,tail12.data.o,ov_SC02_021_jr_8016AB6C.o,tail13.data.o,ov_SC02_021_jr_801734BC.o,tail14.data.o,ov_SC02_021_jr_80178D40.o,tail15.data.o,ov_SC02_021_jr_8017A4AC.o,tail16.data.o,ov_SC02_021_jr_8017C294.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_021/ov_SC02_021_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_021/ov_SC02_021_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_021/ov_SC02_021_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -746,7 +746,7 @@ ov_SC02_026_ELF := $(ov_SC02_026_OUT).elf ov_SC02_026_MAPFILE := $(ov_SC02_026_OUT).map ov_SC02_026_LD_SCRIPT := $(ov_SC02_026_OUT).ld ov_SC02_026_SPLAT_YAML := config/splat.ov_SC02_026.yaml -ov_SC02_026_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_026_jr_8012ACE0.o,tail2.data.o,ov_SC02_026_jr_801380E0.o,tail3.data.o,ov_SC02_026_jr_8013F350.o,tail4.data.o,ov_SC02_026_jr_8013FFD8.o,tail5.data.o,ov_SC02_026_jr_8015444C.o,tail6.data.o,ov_SC02_026_jr_80154C24.o,tail7.data.o,ov_SC02_026_jr_80159C84.o,tail8.data.o,ov_SC02_026_jr_8015A3C8.o,tail9.data.o,ov_SC02_026_jr_8015AE2C.o,tail10.data.o,ov_SC02_026_jr_8015C32C.o,tail11.data.o,ov_SC02_026_jr_8016AB6C.o,tail12.data.o,ov_SC02_026_jr_801734BC.o,tail13.data.o,ov_SC02_026_jr_80178D40.o,tail14.data.o,ov_SC02_026_jr_8017A4AC.o,tail15.data.o,ov_SC02_026_jr_8017C180.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_026_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_026_jr_8012ACE0.o,tail2.data.o,ov_SC02_026_jr_801380E0.o,tail3.data.o,ov_SC02_026_jr_8013F350.o,tail4.data.o,ov_SC02_026_jr_8013FFD8.o,tail5.data.o,ov_SC02_026_jr_8015444C.o,tail6.data.o,ov_SC02_026_jr_80154C24.o,tail7.data.o,ov_SC02_026_jr_801588CC.o,tail8.data.o,ov_SC02_026_jr_80159C84.o,tail9.data.o,ov_SC02_026_jr_8015A3C8.o,tail10.data.o,ov_SC02_026_jr_8015AE2C.o,tail11.data.o,ov_SC02_026_jr_8015C32C.o,tail12.data.o,ov_SC02_026_jr_8016AB6C.o,tail13.data.o,ov_SC02_026_jr_801734BC.o,tail14.data.o,ov_SC02_026_jr_80178D40.o,tail15.data.o,ov_SC02_026_jr_8017A4AC.o,tail16.data.o,ov_SC02_026_jr_8017C180.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_026/ov_SC02_026_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_026/ov_SC02_026_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_026/ov_SC02_026_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -771,7 +771,7 @@ ov_SC02_027_ELF := $(ov_SC02_027_OUT).elf ov_SC02_027_MAPFILE := $(ov_SC02_027_OUT).map ov_SC02_027_LD_SCRIPT := $(ov_SC02_027_OUT).ld ov_SC02_027_SPLAT_YAML := config/splat.ov_SC02_027.yaml -ov_SC02_027_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_027_jr_8012ACE0.o,tail2.data.o,ov_SC02_027_jr_801380E0.o,tail3.data.o,ov_SC02_027_jr_8013F350.o,tail4.data.o,ov_SC02_027_jr_8013FFD8.o,tail5.data.o,ov_SC02_027_jr_8015444C.o,tail6.data.o,ov_SC02_027_jr_80154C24.o,tail7.data.o,ov_SC02_027_jr_80159C84.o,tail8.data.o,ov_SC02_027_jr_8015A3C8.o,tail9.data.o,ov_SC02_027_jr_8015AE2C.o,tail10.data.o,ov_SC02_027_jr_8015C32C.o,tail11.data.o,ov_SC02_027_jr_8016AB6C.o,tail12.data.o,ov_SC02_027_jr_801734BC.o,tail13.data.o,ov_SC02_027_jr_80178D40.o,tail14.data.o,ov_SC02_027_jr_8017A4AC.o,tail15.data.o,ov_SC02_027_jr_8017D898.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_027_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_027_jr_8012ACE0.o,tail2.data.o,ov_SC02_027_jr_801380E0.o,tail3.data.o,ov_SC02_027_jr_8013F350.o,tail4.data.o,ov_SC02_027_jr_8013FFD8.o,tail5.data.o,ov_SC02_027_jr_8015444C.o,tail6.data.o,ov_SC02_027_jr_80154C24.o,tail7.data.o,ov_SC02_027_jr_801588CC.o,tail8.data.o,ov_SC02_027_jr_80159C84.o,tail9.data.o,ov_SC02_027_jr_8015A3C8.o,tail10.data.o,ov_SC02_027_jr_8015AE2C.o,tail11.data.o,ov_SC02_027_jr_8015C32C.o,tail12.data.o,ov_SC02_027_jr_8016AB6C.o,tail13.data.o,ov_SC02_027_jr_801734BC.o,tail14.data.o,ov_SC02_027_jr_80178D40.o,tail15.data.o,ov_SC02_027_jr_8017A4AC.o,tail16.data.o,ov_SC02_027_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_027/ov_SC02_027_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_027/ov_SC02_027_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_027/ov_SC02_027_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -796,7 +796,7 @@ ov_SC02_028_ELF := $(ov_SC02_028_OUT).elf ov_SC02_028_MAPFILE := $(ov_SC02_028_OUT).map ov_SC02_028_LD_SCRIPT := $(ov_SC02_028_OUT).ld ov_SC02_028_SPLAT_YAML := config/splat.ov_SC02_028.yaml -ov_SC02_028_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_028_jr_8012ACE0.o,tail2.data.o,ov_SC02_028_jr_801380E0.o,tail3.data.o,ov_SC02_028_jr_8013F350.o,tail4.data.o,ov_SC02_028_jr_8013FFD8.o,tail5.data.o,ov_SC02_028_jr_8015444C.o,tail6.data.o,ov_SC02_028_jr_80154C24.o,tail7.data.o,ov_SC02_028_jr_80159C84.o,tail8.data.o,ov_SC02_028_jr_8015A3C8.o,tail9.data.o,ov_SC02_028_jr_8015AE2C.o,tail10.data.o,ov_SC02_028_jr_8015C32C.o,tail11.data.o,ov_SC02_028_jr_8016AB6C.o,tail12.data.o,ov_SC02_028_jr_801734BC.o,tail13.data.o,ov_SC02_028_jr_80178D40.o,tail14.data.o,ov_SC02_028_jr_8017A4AC.o,tail15.data.o,ov_SC02_028_jr_8017D898.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_028_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_028_jr_8012ACE0.o,tail2.data.o,ov_SC02_028_jr_801380E0.o,tail3.data.o,ov_SC02_028_jr_8013F350.o,tail4.data.o,ov_SC02_028_jr_8013FFD8.o,tail5.data.o,ov_SC02_028_jr_8015444C.o,tail6.data.o,ov_SC02_028_jr_80154C24.o,tail7.data.o,ov_SC02_028_jr_801588CC.o,tail8.data.o,ov_SC02_028_jr_80159C84.o,tail9.data.o,ov_SC02_028_jr_8015A3C8.o,tail10.data.o,ov_SC02_028_jr_8015AE2C.o,tail11.data.o,ov_SC02_028_jr_8015C32C.o,tail12.data.o,ov_SC02_028_jr_8016AB6C.o,tail13.data.o,ov_SC02_028_jr_801734BC.o,tail14.data.o,ov_SC02_028_jr_80178D40.o,tail15.data.o,ov_SC02_028_jr_8017A4AC.o,tail16.data.o,ov_SC02_028_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_028/ov_SC02_028_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_028/ov_SC02_028_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_028/ov_SC02_028_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -821,7 +821,7 @@ ov_SC02_031_ELF := $(ov_SC02_031_OUT).elf ov_SC02_031_MAPFILE := $(ov_SC02_031_OUT).map ov_SC02_031_LD_SCRIPT := $(ov_SC02_031_OUT).ld ov_SC02_031_SPLAT_YAML := config/splat.ov_SC02_031.yaml -ov_SC02_031_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_031_jr_8012ACE0.o,tail2.data.o,ov_SC02_031_jr_801380E0.o,tail3.data.o,ov_SC02_031_jr_8013F350.o,tail4.data.o,ov_SC02_031_jr_8013FFD8.o,tail5.data.o,ov_SC02_031_jr_8015444C.o,tail6.data.o,ov_SC02_031_jr_80154C24.o,tail7.data.o,ov_SC02_031_jr_80159C84.o,tail8.data.o,ov_SC02_031_jr_8015A3C8.o,tail9.data.o,ov_SC02_031_jr_8015AE2C.o,tail10.data.o,ov_SC02_031_jr_8015C32C.o,tail11.data.o,ov_SC02_031_jr_8016AB6C.o,tail12.data.o,ov_SC02_031_jr_801734BC.o,tail13.data.o,ov_SC02_031_jr_80178D40.o,tail14.data.o,ov_SC02_031_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_031_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_031_jr_8012ACE0.o,tail2.data.o,ov_SC02_031_jr_801380E0.o,tail3.data.o,ov_SC02_031_jr_8013F350.o,tail4.data.o,ov_SC02_031_jr_8013FFD8.o,tail5.data.o,ov_SC02_031_jr_8015444C.o,tail6.data.o,ov_SC02_031_jr_80154C24.o,tail7.data.o,ov_SC02_031_jr_801588CC.o,tail8.data.o,ov_SC02_031_jr_80159C84.o,tail9.data.o,ov_SC02_031_jr_8015A3C8.o,tail10.data.o,ov_SC02_031_jr_8015AE2C.o,tail11.data.o,ov_SC02_031_jr_8015C32C.o,tail12.data.o,ov_SC02_031_jr_8016AB6C.o,tail13.data.o,ov_SC02_031_jr_801734BC.o,tail14.data.o,ov_SC02_031_jr_80178D40.o,tail15.data.o,ov_SC02_031_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_031/ov_SC02_031_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_031/ov_SC02_031_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_031/ov_SC02_031_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -846,7 +846,7 @@ ov_SC02_035_ELF := $(ov_SC02_035_OUT).elf ov_SC02_035_MAPFILE := $(ov_SC02_035_OUT).map ov_SC02_035_LD_SCRIPT := $(ov_SC02_035_OUT).ld ov_SC02_035_SPLAT_YAML := config/splat.ov_SC02_035.yaml -ov_SC02_035_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_035_jr_8012ACE0.o,tail2.data.o,ov_SC02_035_jr_801380E0.o,tail3.data.o,ov_SC02_035_jr_8013F350.o,tail4.data.o,ov_SC02_035_jr_8013FFD8.o,tail5.data.o,ov_SC02_035_jr_8015444C.o,tail6.data.o,ov_SC02_035_jr_80154C24.o,tail7.data.o,ov_SC02_035_jr_80159C84.o,tail8.data.o,ov_SC02_035_jr_8015A3C8.o,tail9.data.o,ov_SC02_035_jr_8015AE2C.o,tail10.data.o,ov_SC02_035_jr_8015C32C.o,tail11.data.o,ov_SC02_035_jr_8016AB6C.o,tail12.data.o,ov_SC02_035_jr_801734BC.o,tail13.data.o,ov_SC02_035_jr_80178D40.o,tail14.data.o,ov_SC02_035_jr_8017A4AC.o,tail15.data.o,ov_SC02_035_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_035_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_035_jr_8012ACE0.o,tail2.data.o,ov_SC02_035_jr_801380E0.o,tail3.data.o,ov_SC02_035_jr_8013F350.o,tail4.data.o,ov_SC02_035_jr_8013FFD8.o,tail5.data.o,ov_SC02_035_jr_8015444C.o,tail6.data.o,ov_SC02_035_jr_80154C24.o,tail7.data.o,ov_SC02_035_jr_801588CC.o,tail8.data.o,ov_SC02_035_jr_80159C84.o,tail9.data.o,ov_SC02_035_jr_8015A3C8.o,tail10.data.o,ov_SC02_035_jr_8015AE2C.o,tail11.data.o,ov_SC02_035_jr_8015C32C.o,tail12.data.o,ov_SC02_035_jr_8016AB6C.o,tail13.data.o,ov_SC02_035_jr_801734BC.o,tail14.data.o,ov_SC02_035_jr_80178D40.o,tail15.data.o,ov_SC02_035_jr_8017A4AC.o,tail16.data.o,ov_SC02_035_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_035/ov_SC02_035_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_035/ov_SC02_035_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_035/ov_SC02_035_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -871,7 +871,7 @@ ov_SC02_039_ELF := $(ov_SC02_039_OUT).elf ov_SC02_039_MAPFILE := $(ov_SC02_039_OUT).map ov_SC02_039_LD_SCRIPT := $(ov_SC02_039_OUT).ld ov_SC02_039_SPLAT_YAML := config/splat.ov_SC02_039.yaml -ov_SC02_039_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_039_jr_8012ACE0.o,tail2.data.o,ov_SC02_039_jr_801380E0.o,tail3.data.o,ov_SC02_039_jr_8013F350.o,tail4.data.o,ov_SC02_039_jr_8013FFD8.o,tail5.data.o,ov_SC02_039_jr_8015444C.o,tail6.data.o,ov_SC02_039_jr_80154C24.o,tail7.data.o,ov_SC02_039_jr_80159C84.o,tail8.data.o,ov_SC02_039_jr_8015A3C8.o,tail9.data.o,ov_SC02_039_jr_8015AE2C.o,tail10.data.o,ov_SC02_039_jr_8015C32C.o,tail11.data.o,ov_SC02_039_jr_8016AB6C.o,tail12.data.o,ov_SC02_039_jr_801734BC.o,tail13.data.o,ov_SC02_039_jr_80178D40.o,tail14.data.o,ov_SC02_039_jr_8017A4AC.o,tail15.data.o,ov_SC02_039_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_039_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_039_jr_8012ACE0.o,tail2.data.o,ov_SC02_039_jr_801380E0.o,tail3.data.o,ov_SC02_039_jr_8013F350.o,tail4.data.o,ov_SC02_039_jr_8013FFD8.o,tail5.data.o,ov_SC02_039_jr_8015444C.o,tail6.data.o,ov_SC02_039_jr_80154C24.o,tail7.data.o,ov_SC02_039_jr_801588CC.o,tail8.data.o,ov_SC02_039_jr_80159C84.o,tail9.data.o,ov_SC02_039_jr_8015A3C8.o,tail10.data.o,ov_SC02_039_jr_8015AE2C.o,tail11.data.o,ov_SC02_039_jr_8015C32C.o,tail12.data.o,ov_SC02_039_jr_8016AB6C.o,tail13.data.o,ov_SC02_039_jr_801734BC.o,tail14.data.o,ov_SC02_039_jr_80178D40.o,tail15.data.o,ov_SC02_039_jr_8017A4AC.o,tail16.data.o,ov_SC02_039_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_039/ov_SC02_039_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_039/ov_SC02_039_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_039/ov_SC02_039_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -896,7 +896,7 @@ ov_SC02_041_ELF := $(ov_SC02_041_OUT).elf ov_SC02_041_MAPFILE := $(ov_SC02_041_OUT).map ov_SC02_041_LD_SCRIPT := $(ov_SC02_041_OUT).ld ov_SC02_041_SPLAT_YAML := config/splat.ov_SC02_041.yaml -ov_SC02_041_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_041_jr_8012ACE0.o,tail2.data.o,ov_SC02_041_jr_801380E0.o,tail3.data.o,ov_SC02_041_jr_8013F350.o,tail4.data.o,ov_SC02_041_jr_8013FFD8.o,tail5.data.o,ov_SC02_041_jr_8015444C.o,tail6.data.o,ov_SC02_041_jr_80154C24.o,tail7.data.o,ov_SC02_041_jr_80159C84.o,tail8.data.o,ov_SC02_041_jr_8015A3C8.o,tail9.data.o,ov_SC02_041_jr_8015AE2C.o,tail10.data.o,ov_SC02_041_jr_8015C32C.o,tail11.data.o,ov_SC02_041_jr_8016AB6C.o,tail12.data.o,ov_SC02_041_jr_801734BC.o,tail13.data.o,ov_SC02_041_jr_80178D40.o,tail14.data.o,ov_SC02_041_jr_8017A4AC.o,tail15.data.o,ov_SC02_041_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_041_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_041_jr_8012ACE0.o,tail2.data.o,ov_SC02_041_jr_801380E0.o,tail3.data.o,ov_SC02_041_jr_8013F350.o,tail4.data.o,ov_SC02_041_jr_8013FFD8.o,tail5.data.o,ov_SC02_041_jr_8015444C.o,tail6.data.o,ov_SC02_041_jr_80154C24.o,tail7.data.o,ov_SC02_041_jr_801588CC.o,tail8.data.o,ov_SC02_041_jr_80159C84.o,tail9.data.o,ov_SC02_041_jr_8015A3C8.o,tail10.data.o,ov_SC02_041_jr_8015AE2C.o,tail11.data.o,ov_SC02_041_jr_8015C32C.o,tail12.data.o,ov_SC02_041_jr_8016AB6C.o,tail13.data.o,ov_SC02_041_jr_801734BC.o,tail14.data.o,ov_SC02_041_jr_80178D40.o,tail15.data.o,ov_SC02_041_jr_8017A4AC.o,tail16.data.o,ov_SC02_041_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_041/ov_SC02_041_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC02_041/ov_SC02_041_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_041/ov_SC02_041_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -921,7 +921,7 @@ ov_SC03_003_ELF := $(ov_SC03_003_OUT).elf ov_SC03_003_MAPFILE := $(ov_SC03_003_OUT).map ov_SC03_003_LD_SCRIPT := $(ov_SC03_003_OUT).ld ov_SC03_003_SPLAT_YAML := config/splat.ov_SC03_003.yaml -ov_SC03_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_003_jr_8012ACE0.o,tail2.data.o,ov_SC03_003_jr_801380E0.o,tail3.data.o,ov_SC03_003_jr_8013F350.o,tail4.data.o,ov_SC03_003_jr_8013FFD8.o,tail5.data.o,ov_SC03_003_jr_8015444C.o,tail6.data.o,ov_SC03_003_jr_80154C24.o,tail7.data.o,ov_SC03_003_jr_80159C84.o,tail8.data.o,ov_SC03_003_jr_8015A3C8.o,tail9.data.o,ov_SC03_003_jr_8015AE2C.o,tail10.data.o,ov_SC03_003_jr_8015C32C.o,tail11.data.o,ov_SC03_003_jr_8016AB6C.o,tail12.data.o,ov_SC03_003_jr_801734BC.o,tail13.data.o,ov_SC03_003_jr_80178D40.o,tail14.data.o,ov_SC03_003_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_003_jr_8012ACE0.o,tail2.data.o,ov_SC03_003_jr_801380E0.o,tail3.data.o,ov_SC03_003_jr_8013F350.o,tail4.data.o,ov_SC03_003_jr_8013FFD8.o,tail5.data.o,ov_SC03_003_jr_8015444C.o,tail6.data.o,ov_SC03_003_jr_80154C24.o,tail7.data.o,ov_SC03_003_jr_801588CC.o,tail8.data.o,ov_SC03_003_jr_80159C84.o,tail9.data.o,ov_SC03_003_jr_8015A3C8.o,tail10.data.o,ov_SC03_003_jr_8015AE2C.o,tail11.data.o,ov_SC03_003_jr_8015C32C.o,tail12.data.o,ov_SC03_003_jr_8016AB6C.o,tail13.data.o,ov_SC03_003_jr_801734BC.o,tail14.data.o,ov_SC03_003_jr_80178D40.o,tail15.data.o,ov_SC03_003_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_003/ov_SC03_003_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_003/ov_SC03_003_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_003/ov_SC03_003_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -946,7 +946,7 @@ ov_SC03_007_ELF := $(ov_SC03_007_OUT).elf ov_SC03_007_MAPFILE := $(ov_SC03_007_OUT).map ov_SC03_007_LD_SCRIPT := $(ov_SC03_007_OUT).ld ov_SC03_007_SPLAT_YAML := config/splat.ov_SC03_007.yaml -ov_SC03_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_007_jr_8012ACE0.o,tail2.data.o,ov_SC03_007_jr_801380E0.o,tail3.data.o,ov_SC03_007_jr_8013F350.o,tail4.data.o,ov_SC03_007_jr_8013FFD8.o,tail5.data.o,ov_SC03_007_jr_8015444C.o,tail6.data.o,ov_SC03_007_jr_80154C24.o,tail7.data.o,ov_SC03_007_jr_80159C84.o,tail8.data.o,ov_SC03_007_jr_8015A3C8.o,tail9.data.o,ov_SC03_007_jr_8015AE2C.o,tail10.data.o,ov_SC03_007_jr_8015C32C.o,tail11.data.o,ov_SC03_007_jr_8016AB6C.o,tail12.data.o,ov_SC03_007_jr_801734BC.o,tail13.data.o,ov_SC03_007_jr_80178D40.o,tail14.data.o,ov_SC03_007_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_007_jr_8012ACE0.o,tail2.data.o,ov_SC03_007_jr_801380E0.o,tail3.data.o,ov_SC03_007_jr_8013F350.o,tail4.data.o,ov_SC03_007_jr_8013FFD8.o,tail5.data.o,ov_SC03_007_jr_8015444C.o,tail6.data.o,ov_SC03_007_jr_80154C24.o,tail7.data.o,ov_SC03_007_jr_801588CC.o,tail8.data.o,ov_SC03_007_jr_80159C84.o,tail9.data.o,ov_SC03_007_jr_8015A3C8.o,tail10.data.o,ov_SC03_007_jr_8015AE2C.o,tail11.data.o,ov_SC03_007_jr_8015C32C.o,tail12.data.o,ov_SC03_007_jr_8016AB6C.o,tail13.data.o,ov_SC03_007_jr_801734BC.o,tail14.data.o,ov_SC03_007_jr_80178D40.o,tail15.data.o,ov_SC03_007_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_007/ov_SC03_007_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_007/ov_SC03_007_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_007/ov_SC03_007_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -971,7 +971,7 @@ ov_SC03_010_ELF := $(ov_SC03_010_OUT).elf ov_SC03_010_MAPFILE := $(ov_SC03_010_OUT).map ov_SC03_010_LD_SCRIPT := $(ov_SC03_010_OUT).ld ov_SC03_010_SPLAT_YAML := config/splat.ov_SC03_010.yaml -ov_SC03_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_010_jr_8012ACE0.o,tail2.data.o,ov_SC03_010_jr_801380E0.o,tail3.data.o,ov_SC03_010_jr_8013F350.o,tail4.data.o,ov_SC03_010_jr_8013FFD8.o,tail5.data.o,ov_SC03_010_jr_8015444C.o,tail6.data.o,ov_SC03_010_jr_80154C24.o,tail7.data.o,ov_SC03_010_jr_80159C84.o,tail8.data.o,ov_SC03_010_jr_8015A3C8.o,tail9.data.o,ov_SC03_010_jr_8015AE2C.o,tail10.data.o,ov_SC03_010_jr_8015C32C.o,tail11.data.o,ov_SC03_010_jr_8016AB6C.o,tail12.data.o,ov_SC03_010_jr_801734BC.o,tail13.data.o,ov_SC03_010_jr_80178D40.o,tail14.data.o,ov_SC03_010_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_010_jr_8012ACE0.o,tail2.data.o,ov_SC03_010_jr_801380E0.o,tail3.data.o,ov_SC03_010_jr_8013F350.o,tail4.data.o,ov_SC03_010_jr_8013FFD8.o,tail5.data.o,ov_SC03_010_jr_8015444C.o,tail6.data.o,ov_SC03_010_jr_80154C24.o,tail7.data.o,ov_SC03_010_jr_801588CC.o,tail8.data.o,ov_SC03_010_jr_80159C84.o,tail9.data.o,ov_SC03_010_jr_8015A3C8.o,tail10.data.o,ov_SC03_010_jr_8015AE2C.o,tail11.data.o,ov_SC03_010_jr_8015C32C.o,tail12.data.o,ov_SC03_010_jr_8016AB6C.o,tail13.data.o,ov_SC03_010_jr_801734BC.o,tail14.data.o,ov_SC03_010_jr_80178D40.o,tail15.data.o,ov_SC03_010_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_010/ov_SC03_010_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_010/ov_SC03_010_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_010/ov_SC03_010_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -996,7 +996,7 @@ ov_SC03_011_ELF := $(ov_SC03_011_OUT).elf ov_SC03_011_MAPFILE := $(ov_SC03_011_OUT).map ov_SC03_011_LD_SCRIPT := $(ov_SC03_011_OUT).ld ov_SC03_011_SPLAT_YAML := config/splat.ov_SC03_011.yaml -ov_SC03_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_011_jr_8012ACE0.o,tail2.data.o,ov_SC03_011_jr_801380E0.o,tail3.data.o,ov_SC03_011_jr_8013F350.o,tail4.data.o,ov_SC03_011_jr_8015444C.o,tail5.data.o,ov_SC03_011_jr_80154C24.o,tail6.data.o,ov_SC03_011_jr_80159C84.o,tail7.data.o,ov_SC03_011_jr_8015A3C8.o,tail8.data.o,ov_SC03_011_jr_8015AE2C.o,tail9.data.o,ov_SC03_011_jr_8015C32C.o,tail10.data.o,ov_SC03_011_jr_8016AB6C.o,tail11.data.o,ov_SC03_011_jr_801734BC.o,tail12.data.o,ov_SC03_011_jr_80178D40.o,tail13.data.o,ov_SC03_011_jr_8017A4AC.o,tail14.data.o,ov_SC03_011_jr_8017C730.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_011_jr_8012ACE0.o,tail2.data.o,ov_SC03_011_jr_801380E0.o,tail3.data.o,ov_SC03_011_jr_8013F350.o,tail4.data.o,ov_SC03_011_jr_8015444C.o,tail5.data.o,ov_SC03_011_jr_80154C24.o,tail6.data.o,ov_SC03_011_jr_801588CC.o,tail7.data.o,ov_SC03_011_jr_80159C84.o,tail8.data.o,ov_SC03_011_jr_8015A3C8.o,tail9.data.o,ov_SC03_011_jr_8015AE2C.o,tail10.data.o,ov_SC03_011_jr_8015C32C.o,tail11.data.o,ov_SC03_011_jr_8016AB6C.o,tail12.data.o,ov_SC03_011_jr_801734BC.o,tail13.data.o,ov_SC03_011_jr_80178D40.o,tail14.data.o,ov_SC03_011_jr_8017A4AC.o,tail15.data.o,ov_SC03_011_jr_8017C730.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_011/ov_SC03_011_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_011/ov_SC03_011_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_011/ov_SC03_011_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1021,7 +1021,7 @@ ov_SC03_012_ELF := $(ov_SC03_012_OUT).elf ov_SC03_012_MAPFILE := $(ov_SC03_012_OUT).map ov_SC03_012_LD_SCRIPT := $(ov_SC03_012_OUT).ld ov_SC03_012_SPLAT_YAML := config/splat.ov_SC03_012.yaml -ov_SC03_012_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_012_jr_8012ACE0.o,tail2.data.o,ov_SC03_012_jr_801380E0.o,tail3.data.o,ov_SC03_012_jr_8013F350.o,tail4.data.o,ov_SC03_012_jr_8013FFD8.o,tail5.data.o,ov_SC03_012_jr_8015444C.o,tail6.data.o,ov_SC03_012_jr_80154C24.o,tail7.data.o,ov_SC03_012_jr_80159C84.o,tail8.data.o,ov_SC03_012_jr_8015A3C8.o,tail9.data.o,ov_SC03_012_jr_8015AE2C.o,tail10.data.o,ov_SC03_012_jr_8015C32C.o,tail11.data.o,ov_SC03_012_jr_8016AB6C.o,tail12.data.o,ov_SC03_012_jr_801734BC.o,tail13.data.o,ov_SC03_012_jr_80178D40.o,tail14.data.o,ov_SC03_012_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_012_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_012_jr_8012ACE0.o,tail2.data.o,ov_SC03_012_jr_801380E0.o,tail3.data.o,ov_SC03_012_jr_8013F350.o,tail4.data.o,ov_SC03_012_jr_8013FFD8.o,tail5.data.o,ov_SC03_012_jr_8015444C.o,tail6.data.o,ov_SC03_012_jr_80154C24.o,tail7.data.o,ov_SC03_012_jr_801588CC.o,tail8.data.o,ov_SC03_012_jr_80159C84.o,tail9.data.o,ov_SC03_012_jr_8015A3C8.o,tail10.data.o,ov_SC03_012_jr_8015AE2C.o,tail11.data.o,ov_SC03_012_jr_8015C32C.o,tail12.data.o,ov_SC03_012_jr_8016AB6C.o,tail13.data.o,ov_SC03_012_jr_801734BC.o,tail14.data.o,ov_SC03_012_jr_80178D40.o,tail15.data.o,ov_SC03_012_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_012/ov_SC03_012_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_012/ov_SC03_012_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_012/ov_SC03_012_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1046,7 +1046,7 @@ ov_SC03_013_ELF := $(ov_SC03_013_OUT).elf ov_SC03_013_MAPFILE := $(ov_SC03_013_OUT).map ov_SC03_013_LD_SCRIPT := $(ov_SC03_013_OUT).ld ov_SC03_013_SPLAT_YAML := config/splat.ov_SC03_013.yaml -ov_SC03_013_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_013_jr_8012ACE0.o,tail2.data.o,ov_SC03_013_jr_801380E0.o,tail3.data.o,ov_SC03_013_jr_8013F350.o,tail4.data.o,ov_SC03_013_jr_8013FFD8.o,tail5.data.o,ov_SC03_013_jr_8015444C.o,tail6.data.o,ov_SC03_013_jr_80154C24.o,tail7.data.o,ov_SC03_013_jr_80159C84.o,tail8.data.o,ov_SC03_013_jr_8015A3C8.o,tail9.data.o,ov_SC03_013_jr_8015AE2C.o,tail10.data.o,ov_SC03_013_jr_8015C32C.o,tail11.data.o,ov_SC03_013_jr_8016AB6C.o,tail12.data.o,ov_SC03_013_jr_801734BC.o,tail13.data.o,ov_SC03_013_jr_80178D40.o,tail14.data.o,ov_SC03_013_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_013_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_013_jr_8012ACE0.o,tail2.data.o,ov_SC03_013_jr_801380E0.o,tail3.data.o,ov_SC03_013_jr_8013F350.o,tail4.data.o,ov_SC03_013_jr_8013FFD8.o,tail5.data.o,ov_SC03_013_jr_8015444C.o,tail6.data.o,ov_SC03_013_jr_80154C24.o,tail7.data.o,ov_SC03_013_jr_801588CC.o,tail8.data.o,ov_SC03_013_jr_80159C84.o,tail9.data.o,ov_SC03_013_jr_8015A3C8.o,tail10.data.o,ov_SC03_013_jr_8015AE2C.o,tail11.data.o,ov_SC03_013_jr_8015C32C.o,tail12.data.o,ov_SC03_013_jr_8016AB6C.o,tail13.data.o,ov_SC03_013_jr_801734BC.o,tail14.data.o,ov_SC03_013_jr_80178D40.o,tail15.data.o,ov_SC03_013_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_013/ov_SC03_013_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_013/ov_SC03_013_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_013/ov_SC03_013_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1071,7 +1071,7 @@ ov_SC03_014_ELF := $(ov_SC03_014_OUT).elf ov_SC03_014_MAPFILE := $(ov_SC03_014_OUT).map ov_SC03_014_LD_SCRIPT := $(ov_SC03_014_OUT).ld ov_SC03_014_SPLAT_YAML := config/splat.ov_SC03_014.yaml -ov_SC03_014_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_014_jr_8012ACE0.o,tail2.data.o,ov_SC03_014_jr_801380E0.o,tail3.data.o,ov_SC03_014_jr_8013F350.o,tail4.data.o,ov_SC03_014_jr_8013FFD8.o,tail5.data.o,ov_SC03_014_jr_8015444C.o,tail6.data.o,ov_SC03_014_jr_80154C24.o,tail7.data.o,ov_SC03_014_jr_80159C84.o,tail8.data.o,ov_SC03_014_jr_8015A3C8.o,tail9.data.o,ov_SC03_014_jr_8015AE2C.o,tail10.data.o,ov_SC03_014_jr_8015C32C.o,tail11.data.o,ov_SC03_014_jr_8016AB6C.o,tail12.data.o,ov_SC03_014_jr_801734BC.o,tail13.data.o,ov_SC03_014_jr_80178D40.o,tail14.data.o,ov_SC03_014_jr_8017A4AC.o,tail15.data.o,ov_SC03_014_jr_8017EB7C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_014_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_014_jr_8012ACE0.o,tail2.data.o,ov_SC03_014_jr_801380E0.o,tail3.data.o,ov_SC03_014_jr_8013F350.o,tail4.data.o,ov_SC03_014_jr_8013FFD8.o,tail5.data.o,ov_SC03_014_jr_8015444C.o,tail6.data.o,ov_SC03_014_jr_80154C24.o,tail7.data.o,ov_SC03_014_jr_801588CC.o,tail8.data.o,ov_SC03_014_jr_80159C84.o,tail9.data.o,ov_SC03_014_jr_8015A3C8.o,tail10.data.o,ov_SC03_014_jr_8015AE2C.o,tail11.data.o,ov_SC03_014_jr_8015C32C.o,tail12.data.o,ov_SC03_014_jr_8016AB6C.o,tail13.data.o,ov_SC03_014_jr_801734BC.o,tail14.data.o,ov_SC03_014_jr_80178D40.o,tail15.data.o,ov_SC03_014_jr_8017A4AC.o,tail16.data.o,ov_SC03_014_jr_8017EB7C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1096,7 +1096,7 @@ ov_SC03_015_ELF := $(ov_SC03_015_OUT).elf ov_SC03_015_MAPFILE := $(ov_SC03_015_OUT).map ov_SC03_015_LD_SCRIPT := $(ov_SC03_015_OUT).ld ov_SC03_015_SPLAT_YAML := config/splat.ov_SC03_015.yaml -ov_SC03_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_015_jr_8012ACE0.o,tail2.data.o,ov_SC03_015_jr_801380E0.o,tail3.data.o,ov_SC03_015_jr_8013F350.o,tail4.data.o,ov_SC03_015_jr_8013FFD8.o,tail5.data.o,ov_SC03_015_jr_8015444C.o,tail6.data.o,ov_SC03_015_jr_80154C24.o,tail7.data.o,ov_SC03_015_jr_80159C84.o,tail8.data.o,ov_SC03_015_jr_8015A3C8.o,tail9.data.o,ov_SC03_015_jr_8015AE2C.o,tail10.data.o,ov_SC03_015_jr_8015C32C.o,tail11.data.o,ov_SC03_015_jr_8016AB6C.o,tail12.data.o,ov_SC03_015_jr_801734BC.o,tail13.data.o,ov_SC03_015_jr_80178D40.o,tail14.data.o,ov_SC03_015_jr_8017A4AC.o,tail15.data.o,ov_SC03_015_jr_8017EB7C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_015_jr_8012ACE0.o,tail2.data.o,ov_SC03_015_jr_801380E0.o,tail3.data.o,ov_SC03_015_jr_8013F350.o,tail4.data.o,ov_SC03_015_jr_8013FFD8.o,tail5.data.o,ov_SC03_015_jr_8015444C.o,tail6.data.o,ov_SC03_015_jr_80154C24.o,tail7.data.o,ov_SC03_015_jr_801588CC.o,tail8.data.o,ov_SC03_015_jr_80159C84.o,tail9.data.o,ov_SC03_015_jr_8015A3C8.o,tail10.data.o,ov_SC03_015_jr_8015AE2C.o,tail11.data.o,ov_SC03_015_jr_8015C32C.o,tail12.data.o,ov_SC03_015_jr_8016AB6C.o,tail13.data.o,ov_SC03_015_jr_801734BC.o,tail14.data.o,ov_SC03_015_jr_80178D40.o,tail15.data.o,ov_SC03_015_jr_8017A4AC.o,tail16.data.o,ov_SC03_015_jr_8017EB7C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1121,7 +1121,7 @@ ov_SC03_023_ELF := $(ov_SC03_023_OUT).elf ov_SC03_023_MAPFILE := $(ov_SC03_023_OUT).map ov_SC03_023_LD_SCRIPT := $(ov_SC03_023_OUT).ld ov_SC03_023_SPLAT_YAML := config/splat.ov_SC03_023.yaml -ov_SC03_023_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_023_jr_8012ACE0.o,tail2.data.o,ov_SC03_023_jr_801380E0.o,tail3.data.o,ov_SC03_023_jr_8013F350.o,tail4.data.o,ov_SC03_023_jr_8013FFD8.o,tail5.data.o,ov_SC03_023_jr_8015444C.o,tail6.data.o,ov_SC03_023_jr_80154C24.o,tail7.data.o,ov_SC03_023_jr_80159C84.o,tail8.data.o,ov_SC03_023_jr_8015A3C8.o,tail9.data.o,ov_SC03_023_jr_8015AE2C.o,tail10.data.o,ov_SC03_023_jr_8015C32C.o,tail11.data.o,ov_SC03_023_jr_8016AB6C.o,tail12.data.o,ov_SC03_023_jr_801734BC.o,tail13.data.o,ov_SC03_023_jr_80178D40.o,tail14.data.o,ov_SC03_023_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_023_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_023_jr_8012ACE0.o,tail2.data.o,ov_SC03_023_jr_801380E0.o,tail3.data.o,ov_SC03_023_jr_8013F350.o,tail4.data.o,ov_SC03_023_jr_8013FFD8.o,tail5.data.o,ov_SC03_023_jr_8015444C.o,tail6.data.o,ov_SC03_023_jr_80154C24.o,tail7.data.o,ov_SC03_023_jr_801588CC.o,tail8.data.o,ov_SC03_023_jr_80159C84.o,tail9.data.o,ov_SC03_023_jr_8015A3C8.o,tail10.data.o,ov_SC03_023_jr_8015AE2C.o,tail11.data.o,ov_SC03_023_jr_8015C32C.o,tail12.data.o,ov_SC03_023_jr_8016AB6C.o,tail13.data.o,ov_SC03_023_jr_801734BC.o,tail14.data.o,ov_SC03_023_jr_80178D40.o,tail15.data.o,ov_SC03_023_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_023/ov_SC03_023_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_023/ov_SC03_023_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_023/ov_SC03_023_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1146,7 +1146,7 @@ ov_SC03_024_ELF := $(ov_SC03_024_OUT).elf ov_SC03_024_MAPFILE := $(ov_SC03_024_OUT).map ov_SC03_024_LD_SCRIPT := $(ov_SC03_024_OUT).ld ov_SC03_024_SPLAT_YAML := config/splat.ov_SC03_024.yaml -ov_SC03_024_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_024_jr_8012ACE0.o,tail2.data.o,ov_SC03_024_jr_801380E0.o,tail3.data.o,ov_SC03_024_jr_8013F350.o,tail4.data.o,ov_SC03_024_jr_8013FFD8.o,tail5.data.o,ov_SC03_024_jr_8015444C.o,tail6.data.o,ov_SC03_024_jr_80154C24.o,tail7.data.o,ov_SC03_024_jr_80159C84.o,tail8.data.o,ov_SC03_024_jr_8015A3C8.o,tail9.data.o,ov_SC03_024_jr_8015AE2C.o,tail10.data.o,ov_SC03_024_jr_8015C32C.o,tail11.data.o,ov_SC03_024_jr_8016AB6C.o,tail12.data.o,ov_SC03_024_jr_801734BC.o,tail13.data.o,ov_SC03_024_jr_80178D40.o,tail14.data.o,ov_SC03_024_jr_8017A4AC.o,tail15.data.o,ov_SC03_024_jr_8017DF84.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_024_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_024_jr_8012ACE0.o,tail2.data.o,ov_SC03_024_jr_801380E0.o,tail3.data.o,ov_SC03_024_jr_8013F350.o,tail4.data.o,ov_SC03_024_jr_8013FFD8.o,tail5.data.o,ov_SC03_024_jr_8015444C.o,tail6.data.o,ov_SC03_024_jr_80154C24.o,tail7.data.o,ov_SC03_024_jr_801588CC.o,tail8.data.o,ov_SC03_024_jr_80159C84.o,tail9.data.o,ov_SC03_024_jr_8015A3C8.o,tail10.data.o,ov_SC03_024_jr_8015AE2C.o,tail11.data.o,ov_SC03_024_jr_8015C32C.o,tail12.data.o,ov_SC03_024_jr_8016AB6C.o,tail13.data.o,ov_SC03_024_jr_801734BC.o,tail14.data.o,ov_SC03_024_jr_80178D40.o,tail15.data.o,ov_SC03_024_jr_8017A4AC.o,tail16.data.o,ov_SC03_024_jr_8017DF84.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_024/ov_SC03_024_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_024/ov_SC03_024_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_024/ov_SC03_024_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1171,7 +1171,7 @@ ov_SC03_028_ELF := $(ov_SC03_028_OUT).elf ov_SC03_028_MAPFILE := $(ov_SC03_028_OUT).map ov_SC03_028_LD_SCRIPT := $(ov_SC03_028_OUT).ld ov_SC03_028_SPLAT_YAML := config/splat.ov_SC03_028.yaml -ov_SC03_028_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_028_jr_8012ACE0.o,tail2.data.o,ov_SC03_028_jr_801380E0.o,tail3.data.o,ov_SC03_028_jr_8013F350.o,tail4.data.o,ov_SC03_028_jr_8013FFD8.o,tail5.data.o,ov_SC03_028_jr_8015444C.o,tail6.data.o,ov_SC03_028_jr_80154C24.o,tail7.data.o,ov_SC03_028_jr_80159C84.o,tail8.data.o,ov_SC03_028_jr_8015A3C8.o,tail9.data.o,ov_SC03_028_jr_8015AE2C.o,tail10.data.o,ov_SC03_028_jr_8015C32C.o,tail11.data.o,ov_SC03_028_jr_8016AB6C.o,tail12.data.o,ov_SC03_028_jr_801734BC.o,tail13.data.o,ov_SC03_028_jr_80178D40.o,tail14.data.o,ov_SC03_028_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_028_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_028_jr_8012ACE0.o,tail2.data.o,ov_SC03_028_jr_801380E0.o,tail3.data.o,ov_SC03_028_jr_8013F350.o,tail4.data.o,ov_SC03_028_jr_8013FFD8.o,tail5.data.o,ov_SC03_028_jr_8015444C.o,tail6.data.o,ov_SC03_028_jr_80154C24.o,tail7.data.o,ov_SC03_028_jr_801588CC.o,tail8.data.o,ov_SC03_028_jr_80159C84.o,tail9.data.o,ov_SC03_028_jr_8015A3C8.o,tail10.data.o,ov_SC03_028_jr_8015AE2C.o,tail11.data.o,ov_SC03_028_jr_8015C32C.o,tail12.data.o,ov_SC03_028_jr_8016AB6C.o,tail13.data.o,ov_SC03_028_jr_801734BC.o,tail14.data.o,ov_SC03_028_jr_80178D40.o,tail15.data.o,ov_SC03_028_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_028/ov_SC03_028_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_028/ov_SC03_028_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_028/ov_SC03_028_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1196,7 +1196,7 @@ ov_SC03_029_ELF := $(ov_SC03_029_OUT).elf ov_SC03_029_MAPFILE := $(ov_SC03_029_OUT).map ov_SC03_029_LD_SCRIPT := $(ov_SC03_029_OUT).ld ov_SC03_029_SPLAT_YAML := config/splat.ov_SC03_029.yaml -ov_SC03_029_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_029_jr_8012ACE0.o,tail2.data.o,ov_SC03_029_jr_801380E0.o,tail3.data.o,ov_SC03_029_jr_8013F350.o,tail4.data.o,ov_SC03_029_jr_8013FFD8.o,tail5.data.o,ov_SC03_029_jr_8015444C.o,tail6.data.o,ov_SC03_029_jr_80154C24.o,tail7.data.o,ov_SC03_029_jr_80159C84.o,tail8.data.o,ov_SC03_029_jr_8015A3C8.o,tail9.data.o,ov_SC03_029_jr_8015AE2C.o,tail10.data.o,ov_SC03_029_jr_8015C32C.o,tail11.data.o,ov_SC03_029_jr_8016AB6C.o,tail12.data.o,ov_SC03_029_jr_801734BC.o,tail13.data.o,ov_SC03_029_jr_80178D40.o,tail14.data.o,ov_SC03_029_jr_8017A4AC.o,tail15.data.o,ov_SC03_029_jr_8017DC70.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_029_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_029_jr_8012ACE0.o,tail2.data.o,ov_SC03_029_jr_801380E0.o,tail3.data.o,ov_SC03_029_jr_8013F350.o,tail4.data.o,ov_SC03_029_jr_8013FFD8.o,tail5.data.o,ov_SC03_029_jr_8015444C.o,tail6.data.o,ov_SC03_029_jr_80154C24.o,tail7.data.o,ov_SC03_029_jr_801588CC.o,tail8.data.o,ov_SC03_029_jr_80159C84.o,tail9.data.o,ov_SC03_029_jr_8015A3C8.o,tail10.data.o,ov_SC03_029_jr_8015AE2C.o,tail11.data.o,ov_SC03_029_jr_8015C32C.o,tail12.data.o,ov_SC03_029_jr_8016AB6C.o,tail13.data.o,ov_SC03_029_jr_801734BC.o,tail14.data.o,ov_SC03_029_jr_80178D40.o,tail15.data.o,ov_SC03_029_jr_8017A4AC.o,tail16.data.o,ov_SC03_029_jr_8017DC70.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_029/ov_SC03_029_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_029/ov_SC03_029_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_029/ov_SC03_029_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1221,7 +1221,7 @@ ov_SC03_030_ELF := $(ov_SC03_030_OUT).elf ov_SC03_030_MAPFILE := $(ov_SC03_030_OUT).map ov_SC03_030_LD_SCRIPT := $(ov_SC03_030_OUT).ld ov_SC03_030_SPLAT_YAML := config/splat.ov_SC03_030.yaml -ov_SC03_030_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_030_jr_8012ACE0.o,tail2.data.o,ov_SC03_030_jr_801380E0.o,tail3.data.o,ov_SC03_030_jr_8013F350.o,tail4.data.o,ov_SC03_030_jr_8015444C.o,tail5.data.o,ov_SC03_030_jr_80154C24.o,tail6.data.o,ov_SC03_030_jr_80159C84.o,tail7.data.o,ov_SC03_030_jr_8015A3C8.o,tail8.data.o,ov_SC03_030_jr_8015AE2C.o,tail9.data.o,ov_SC03_030_jr_8015C32C.o,tail10.data.o,ov_SC03_030_jr_8016AB6C.o,tail11.data.o,ov_SC03_030_jr_801734BC.o,tail12.data.o,ov_SC03_030_jr_80178D40.o,tail13.data.o,ov_SC03_030_jr_8017A4AC.o,tail14.data.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_030_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_030_jr_8012ACE0.o,tail2.data.o,ov_SC03_030_jr_801380E0.o,tail3.data.o,ov_SC03_030_jr_8013F350.o,tail4.data.o,ov_SC03_030_jr_8015444C.o,tail5.data.o,ov_SC03_030_jr_80154C24.o,tail6.data.o,ov_SC03_030_jr_801588CC.o,tail7.data.o,ov_SC03_030_jr_80159C84.o,tail8.data.o,ov_SC03_030_jr_8015A3C8.o,tail9.data.o,ov_SC03_030_jr_8015AE2C.o,tail10.data.o,ov_SC03_030_jr_8015C32C.o,tail11.data.o,ov_SC03_030_jr_8016AB6C.o,tail12.data.o,ov_SC03_030_jr_801734BC.o,tail13.data.o,ov_SC03_030_jr_80178D40.o,tail14.data.o,ov_SC03_030_jr_8017A4AC.o,tail15.data.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_030/ov_SC03_030_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_030/ov_SC03_030_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_030/ov_SC03_030_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1246,7 +1246,7 @@ ov_SC03_031_ELF := $(ov_SC03_031_OUT).elf ov_SC03_031_MAPFILE := $(ov_SC03_031_OUT).map ov_SC03_031_LD_SCRIPT := $(ov_SC03_031_OUT).ld ov_SC03_031_SPLAT_YAML := config/splat.ov_SC03_031.yaml -ov_SC03_031_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_031_jr_8012ACE0.o,tail2.data.o,ov_SC03_031_jr_801380E0.o,tail3.data.o,ov_SC03_031_jr_8013F350.o,tail4.data.o,ov_SC03_031_jr_8013FFD8.o,tail5.data.o,ov_SC03_031_jr_8015444C.o,tail6.data.o,ov_SC03_031_jr_80154C24.o,tail7.data.o,ov_SC03_031_jr_80159C84.o,tail8.data.o,ov_SC03_031_jr_8015A3C8.o,tail9.data.o,ov_SC03_031_jr_8015AE2C.o,tail10.data.o,ov_SC03_031_jr_8015C32C.o,tail11.data.o,ov_SC03_031_jr_8016AB6C.o,tail12.data.o,ov_SC03_031_jr_801734BC.o,tail13.data.o,ov_SC03_031_jr_80178D40.o,tail14.data.o,ov_SC03_031_jr_8017A4AC.o,tail15.data.o,ov_SC03_031_jr_8017DB5C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_031_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_031_jr_8012ACE0.o,tail2.data.o,ov_SC03_031_jr_801380E0.o,tail3.data.o,ov_SC03_031_jr_8013F350.o,tail4.data.o,ov_SC03_031_jr_8013FFD8.o,tail5.data.o,ov_SC03_031_jr_8015444C.o,tail6.data.o,ov_SC03_031_jr_80154C24.o,tail7.data.o,ov_SC03_031_jr_801588CC.o,tail8.data.o,ov_SC03_031_jr_80159C84.o,tail9.data.o,ov_SC03_031_jr_8015A3C8.o,tail10.data.o,ov_SC03_031_jr_8015AE2C.o,tail11.data.o,ov_SC03_031_jr_8015C32C.o,tail12.data.o,ov_SC03_031_jr_8016AB6C.o,tail13.data.o,ov_SC03_031_jr_801734BC.o,tail14.data.o,ov_SC03_031_jr_80178D40.o,tail15.data.o,ov_SC03_031_jr_8017A4AC.o,tail16.data.o,ov_SC03_031_jr_8017DB5C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_031/ov_SC03_031_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_031/ov_SC03_031_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_031/ov_SC03_031_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1271,7 +1271,7 @@ ov_SC03_089_ELF := $(ov_SC03_089_OUT).elf ov_SC03_089_MAPFILE := $(ov_SC03_089_OUT).map ov_SC03_089_LD_SCRIPT := $(ov_SC03_089_OUT).ld ov_SC03_089_SPLAT_YAML := config/splat.ov_SC03_089.yaml -ov_SC03_089_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_089_jr_8012ACE0.o,tail2.data.o,ov_SC03_089_jr_801380E0.o,tail3.data.o,ov_SC03_089_jr_8013F350.o,tail4.data.o,ov_SC03_089_jr_8013FFD8.o,tail5.data.o,ov_SC03_089_jr_8015444C.o,tail6.data.o,ov_SC03_089_jr_80154C24.o,tail7.data.o,ov_SC03_089_jr_80159C84.o,tail8.data.o,ov_SC03_089_jr_8015A3C8.o,tail9.data.o,ov_SC03_089_jr_8015AE2C.o,tail10.data.o,ov_SC03_089_jr_8015C32C.o,tail11.data.o,ov_SC03_089_jr_8016AB6C.o,tail12.data.o,ov_SC03_089_jr_801734BC.o,tail13.data.o,ov_SC03_089_jr_80178D40.o,tail14.data.o,ov_SC03_089_jr_8017A4AC.o,tail15.data.o,ov_SC03_089_jr_8017CA80.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_089_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_089_jr_8012ACE0.o,tail2.data.o,ov_SC03_089_jr_801380E0.o,tail3.data.o,ov_SC03_089_jr_8013F350.o,tail4.data.o,ov_SC03_089_jr_8013FFD8.o,tail5.data.o,ov_SC03_089_jr_8015444C.o,tail6.data.o,ov_SC03_089_jr_80154C24.o,tail7.data.o,ov_SC03_089_jr_801588CC.o,tail8.data.o,ov_SC03_089_jr_80159C84.o,tail9.data.o,ov_SC03_089_jr_8015A3C8.o,tail10.data.o,ov_SC03_089_jr_8015AE2C.o,tail11.data.o,ov_SC03_089_jr_8015C32C.o,tail12.data.o,ov_SC03_089_jr_8016AB6C.o,tail13.data.o,ov_SC03_089_jr_801734BC.o,tail14.data.o,ov_SC03_089_jr_80178D40.o,tail15.data.o,ov_SC03_089_jr_8017A4AC.o,tail16.data.o,ov_SC03_089_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_089/ov_SC03_089_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_089/ov_SC03_089_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_089/ov_SC03_089_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1296,7 +1296,7 @@ ov_SC03_090_ELF := $(ov_SC03_090_OUT).elf ov_SC03_090_MAPFILE := $(ov_SC03_090_OUT).map ov_SC03_090_LD_SCRIPT := $(ov_SC03_090_OUT).ld ov_SC03_090_SPLAT_YAML := config/splat.ov_SC03_090.yaml -ov_SC03_090_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_090_jr_8012ACE0.o,tail2.data.o,ov_SC03_090_jr_801380E0.o,tail3.data.o,ov_SC03_090_jr_8013F350.o,tail4.data.o,ov_SC03_090_jr_8013FFD8.o,tail5.data.o,ov_SC03_090_jr_8015444C.o,tail6.data.o,ov_SC03_090_jr_80154C24.o,tail7.data.o,ov_SC03_090_jr_80159C84.o,tail8.data.o,ov_SC03_090_jr_8015A3C8.o,tail9.data.o,ov_SC03_090_jr_8015AE2C.o,tail10.data.o,ov_SC03_090_jr_8015C32C.o,tail11.data.o,ov_SC03_090_jr_8016AB6C.o,tail12.data.o,ov_SC03_090_jr_801734BC.o,tail13.data.o,ov_SC03_090_jr_80178D40.o,tail14.data.o,ov_SC03_090_jr_8017A4AC.o,tail15.data.o,ov_SC03_090_jr_8017CA80.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_090_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_090_jr_8012ACE0.o,tail2.data.o,ov_SC03_090_jr_801380E0.o,tail3.data.o,ov_SC03_090_jr_8013F350.o,tail4.data.o,ov_SC03_090_jr_8013FFD8.o,tail5.data.o,ov_SC03_090_jr_8015444C.o,tail6.data.o,ov_SC03_090_jr_80154C24.o,tail7.data.o,ov_SC03_090_jr_801588CC.o,tail8.data.o,ov_SC03_090_jr_80159C84.o,tail9.data.o,ov_SC03_090_jr_8015A3C8.o,tail10.data.o,ov_SC03_090_jr_8015AE2C.o,tail11.data.o,ov_SC03_090_jr_8015C32C.o,tail12.data.o,ov_SC03_090_jr_8016AB6C.o,tail13.data.o,ov_SC03_090_jr_801734BC.o,tail14.data.o,ov_SC03_090_jr_80178D40.o,tail15.data.o,ov_SC03_090_jr_8017A4AC.o,tail16.data.o,ov_SC03_090_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_090/ov_SC03_090_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_090/ov_SC03_090_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_090/ov_SC03_090_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1321,7 +1321,7 @@ ov_SC03_091_ELF := $(ov_SC03_091_OUT).elf ov_SC03_091_MAPFILE := $(ov_SC03_091_OUT).map ov_SC03_091_LD_SCRIPT := $(ov_SC03_091_OUT).ld ov_SC03_091_SPLAT_YAML := config/splat.ov_SC03_091.yaml -ov_SC03_091_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_091_jr_8012ACE0.o,tail2.data.o,ov_SC03_091_jr_801380E0.o,tail3.data.o,ov_SC03_091_jr_8013F350.o,tail4.data.o,ov_SC03_091_jr_8013FFD8.o,tail5.data.o,ov_SC03_091_jr_8015444C.o,tail6.data.o,ov_SC03_091_jr_80154C24.o,tail7.data.o,ov_SC03_091_jr_80159C84.o,tail8.data.o,ov_SC03_091_jr_8015A3C8.o,tail9.data.o,ov_SC03_091_jr_8015AE2C.o,tail10.data.o,ov_SC03_091_jr_8015C32C.o,tail11.data.o,ov_SC03_091_jr_8016AB6C.o,tail12.data.o,ov_SC03_091_jr_801734BC.o,tail13.data.o,ov_SC03_091_jr_80178D40.o,tail14.data.o,ov_SC03_091_jr_8017A4AC.o,tail15.data.o,ov_SC03_091_jr_8017D898.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_091_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_091_jr_8012ACE0.o,tail2.data.o,ov_SC03_091_jr_801380E0.o,tail3.data.o,ov_SC03_091_jr_8013F350.o,tail4.data.o,ov_SC03_091_jr_8013FFD8.o,tail5.data.o,ov_SC03_091_jr_8015444C.o,tail6.data.o,ov_SC03_091_jr_80154C24.o,tail7.data.o,ov_SC03_091_jr_801588CC.o,tail8.data.o,ov_SC03_091_jr_80159C84.o,tail9.data.o,ov_SC03_091_jr_8015A3C8.o,tail10.data.o,ov_SC03_091_jr_8015AE2C.o,tail11.data.o,ov_SC03_091_jr_8015C32C.o,tail12.data.o,ov_SC03_091_jr_8016AB6C.o,tail13.data.o,ov_SC03_091_jr_801734BC.o,tail14.data.o,ov_SC03_091_jr_80178D40.o,tail15.data.o,ov_SC03_091_jr_8017A4AC.o,tail16.data.o,ov_SC03_091_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_091/ov_SC03_091_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_091/ov_SC03_091_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_091/ov_SC03_091_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1346,7 +1346,7 @@ ov_SC03_092_ELF := $(ov_SC03_092_OUT).elf ov_SC03_092_MAPFILE := $(ov_SC03_092_OUT).map ov_SC03_092_LD_SCRIPT := $(ov_SC03_092_OUT).ld ov_SC03_092_SPLAT_YAML := config/splat.ov_SC03_092.yaml -ov_SC03_092_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_092_jr_8012ACE0.o,tail2.data.o,ov_SC03_092_jr_801380E0.o,tail3.data.o,ov_SC03_092_jr_8013F350.o,tail4.data.o,ov_SC03_092_jr_8013FFD8.o,tail5.data.o,ov_SC03_092_jr_8015444C.o,tail6.data.o,ov_SC03_092_jr_80154C24.o,tail7.data.o,ov_SC03_092_jr_80159C84.o,tail8.data.o,ov_SC03_092_jr_8015A3C8.o,tail9.data.o,ov_SC03_092_jr_8015AE2C.o,tail10.data.o,ov_SC03_092_jr_8015C32C.o,tail11.data.o,ov_SC03_092_jr_8016AB6C.o,tail12.data.o,ov_SC03_092_jr_801734BC.o,tail13.data.o,ov_SC03_092_jr_80178D40.o,tail14.data.o,ov_SC03_092_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_092_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_092_jr_8012ACE0.o,tail2.data.o,ov_SC03_092_jr_801380E0.o,tail3.data.o,ov_SC03_092_jr_8013F350.o,tail4.data.o,ov_SC03_092_jr_8013FFD8.o,tail5.data.o,ov_SC03_092_jr_8015444C.o,tail6.data.o,ov_SC03_092_jr_80154C24.o,tail7.data.o,ov_SC03_092_jr_801588CC.o,tail8.data.o,ov_SC03_092_jr_80159C84.o,tail9.data.o,ov_SC03_092_jr_8015A3C8.o,tail10.data.o,ov_SC03_092_jr_8015AE2C.o,tail11.data.o,ov_SC03_092_jr_8015C32C.o,tail12.data.o,ov_SC03_092_jr_8016AB6C.o,tail13.data.o,ov_SC03_092_jr_801734BC.o,tail14.data.o,ov_SC03_092_jr_80178D40.o,tail15.data.o,ov_SC03_092_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_092/ov_SC03_092_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_092/ov_SC03_092_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_092/ov_SC03_092_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1371,7 +1371,7 @@ ov_SC03_093_ELF := $(ov_SC03_093_OUT).elf ov_SC03_093_MAPFILE := $(ov_SC03_093_OUT).map ov_SC03_093_LD_SCRIPT := $(ov_SC03_093_OUT).ld ov_SC03_093_SPLAT_YAML := config/splat.ov_SC03_093.yaml -ov_SC03_093_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_093_jr_8012ACE0.o,tail2.data.o,ov_SC03_093_jr_801380E0.o,tail3.data.o,ov_SC03_093_jr_8013F350.o,tail4.data.o,ov_SC03_093_jr_8013FFD8.o,tail5.data.o,ov_SC03_093_jr_8015444C.o,tail6.data.o,ov_SC03_093_jr_80154C24.o,tail7.data.o,ov_SC03_093_jr_80159C84.o,tail8.data.o,ov_SC03_093_jr_8015A3C8.o,tail9.data.o,ov_SC03_093_jr_8015AE2C.o,tail10.data.o,ov_SC03_093_jr_8015C32C.o,tail11.data.o,ov_SC03_093_jr_8016AB6C.o,tail12.data.o,ov_SC03_093_jr_801734BC.o,tail13.data.o,ov_SC03_093_jr_80178D40.o,tail14.data.o,ov_SC03_093_jr_8017A4AC.o,tail15.data.o,ov_SC03_093_jr_8017D898.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_093_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_093_jr_8012ACE0.o,tail2.data.o,ov_SC03_093_jr_801380E0.o,tail3.data.o,ov_SC03_093_jr_8013F350.o,tail4.data.o,ov_SC03_093_jr_8013FFD8.o,tail5.data.o,ov_SC03_093_jr_8015444C.o,tail6.data.o,ov_SC03_093_jr_80154C24.o,tail7.data.o,ov_SC03_093_jr_801588CC.o,tail8.data.o,ov_SC03_093_jr_80159C84.o,tail9.data.o,ov_SC03_093_jr_8015A3C8.o,tail10.data.o,ov_SC03_093_jr_8015AE2C.o,tail11.data.o,ov_SC03_093_jr_8015C32C.o,tail12.data.o,ov_SC03_093_jr_8016AB6C.o,tail13.data.o,ov_SC03_093_jr_801734BC.o,tail14.data.o,ov_SC03_093_jr_80178D40.o,tail15.data.o,ov_SC03_093_jr_8017A4AC.o,tail16.data.o,ov_SC03_093_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_093/ov_SC03_093_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_093/ov_SC03_093_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_093/ov_SC03_093_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1396,7 +1396,7 @@ ov_SC03_094_ELF := $(ov_SC03_094_OUT).elf ov_SC03_094_MAPFILE := $(ov_SC03_094_OUT).map ov_SC03_094_LD_SCRIPT := $(ov_SC03_094_OUT).ld ov_SC03_094_SPLAT_YAML := config/splat.ov_SC03_094.yaml -ov_SC03_094_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_094_jr_8012ACE0.o,tail2.data.o,ov_SC03_094_jr_801380E0.o,tail3.data.o,ov_SC03_094_jr_8013F350.o,tail4.data.o,ov_SC03_094_jr_8013FFD8.o,tail5.data.o,ov_SC03_094_jr_8015444C.o,tail6.data.o,ov_SC03_094_jr_80154C24.o,tail7.data.o,ov_SC03_094_jr_80159C84.o,tail8.data.o,ov_SC03_094_jr_8015A3C8.o,tail9.data.o,ov_SC03_094_jr_8015AE2C.o,tail10.data.o,ov_SC03_094_jr_8015C32C.o,tail11.data.o,ov_SC03_094_jr_8016AB6C.o,tail12.data.o,ov_SC03_094_jr_801734BC.o,tail13.data.o,ov_SC03_094_jr_80178D40.o,tail14.data.o,ov_SC03_094_jr_8017A4AC.o,tail15.data.o,ov_SC03_094_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_094_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_094_jr_8012ACE0.o,tail2.data.o,ov_SC03_094_jr_801380E0.o,tail3.data.o,ov_SC03_094_jr_8013F350.o,tail4.data.o,ov_SC03_094_jr_8013FFD8.o,tail5.data.o,ov_SC03_094_jr_8015444C.o,tail6.data.o,ov_SC03_094_jr_80154C24.o,tail7.data.o,ov_SC03_094_jr_801588CC.o,tail8.data.o,ov_SC03_094_jr_80159C84.o,tail9.data.o,ov_SC03_094_jr_8015A3C8.o,tail10.data.o,ov_SC03_094_jr_8015AE2C.o,tail11.data.o,ov_SC03_094_jr_8015C32C.o,tail12.data.o,ov_SC03_094_jr_8016AB6C.o,tail13.data.o,ov_SC03_094_jr_801734BC.o,tail14.data.o,ov_SC03_094_jr_80178D40.o,tail15.data.o,ov_SC03_094_jr_8017A4AC.o,tail16.data.o,ov_SC03_094_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_094/ov_SC03_094_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_094/ov_SC03_094_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_094/ov_SC03_094_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1421,7 +1421,7 @@ ov_SC03_095_ELF := $(ov_SC03_095_OUT).elf ov_SC03_095_MAPFILE := $(ov_SC03_095_OUT).map ov_SC03_095_LD_SCRIPT := $(ov_SC03_095_OUT).ld ov_SC03_095_SPLAT_YAML := config/splat.ov_SC03_095.yaml -ov_SC03_095_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_095_jr_8012ACE0.o,tail2.data.o,ov_SC03_095_jr_801380E0.o,tail3.data.o,ov_SC03_095_jr_8013F350.o,tail4.data.o,ov_SC03_095_jr_8013FFD8.o,tail5.data.o,ov_SC03_095_jr_8015444C.o,tail6.data.o,ov_SC03_095_jr_80154C24.o,tail7.data.o,ov_SC03_095_jr_80159C84.o,tail8.data.o,ov_SC03_095_jr_8015A3C8.o,tail9.data.o,ov_SC03_095_jr_8015AE2C.o,tail10.data.o,ov_SC03_095_jr_8015C32C.o,tail11.data.o,ov_SC03_095_jr_8016AB6C.o,tail12.data.o,ov_SC03_095_jr_801734BC.o,tail13.data.o,ov_SC03_095_jr_80178D40.o,tail14.data.o,ov_SC03_095_jr_8017A4AC.o,tail15.data.o,ov_SC03_095_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_095_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_095_jr_8012ACE0.o,tail2.data.o,ov_SC03_095_jr_801380E0.o,tail3.data.o,ov_SC03_095_jr_8013F350.o,tail4.data.o,ov_SC03_095_jr_8013FFD8.o,tail5.data.o,ov_SC03_095_jr_8015444C.o,tail6.data.o,ov_SC03_095_jr_80154C24.o,tail7.data.o,ov_SC03_095_jr_801588CC.o,tail8.data.o,ov_SC03_095_jr_80159C84.o,tail9.data.o,ov_SC03_095_jr_8015A3C8.o,tail10.data.o,ov_SC03_095_jr_8015AE2C.o,tail11.data.o,ov_SC03_095_jr_8015C32C.o,tail12.data.o,ov_SC03_095_jr_8016AB6C.o,tail13.data.o,ov_SC03_095_jr_801734BC.o,tail14.data.o,ov_SC03_095_jr_80178D40.o,tail15.data.o,ov_SC03_095_jr_8017A4AC.o,tail16.data.o,ov_SC03_095_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_095/ov_SC03_095_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_095/ov_SC03_095_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_095/ov_SC03_095_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1446,7 +1446,7 @@ ov_SC03_096_ELF := $(ov_SC03_096_OUT).elf ov_SC03_096_MAPFILE := $(ov_SC03_096_OUT).map ov_SC03_096_LD_SCRIPT := $(ov_SC03_096_OUT).ld ov_SC03_096_SPLAT_YAML := config/splat.ov_SC03_096.yaml -ov_SC03_096_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_096_jr_8012ACE0.o,tail2.data.o,ov_SC03_096_jr_801380E0.o,tail3.data.o,ov_SC03_096_jr_8013F350.o,tail4.data.o,ov_SC03_096_jr_8013FFD8.o,tail5.data.o,ov_SC03_096_jr_8015444C.o,tail6.data.o,ov_SC03_096_jr_80154C24.o,tail7.data.o,ov_SC03_096_jr_80159C84.o,tail8.data.o,ov_SC03_096_jr_8015A3C8.o,tail9.data.o,ov_SC03_096_jr_8015AE2C.o,tail10.data.o,ov_SC03_096_jr_8015C32C.o,tail11.data.o,ov_SC03_096_jr_8016AB6C.o,tail12.data.o,ov_SC03_096_jr_801734BC.o,tail13.data.o,ov_SC03_096_jr_80178D40.o,tail14.data.o,ov_SC03_096_jr_8017A4AC.o,tail15.data.o,ov_SC03_096_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_096_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_096_jr_8012ACE0.o,tail2.data.o,ov_SC03_096_jr_801380E0.o,tail3.data.o,ov_SC03_096_jr_8013F350.o,tail4.data.o,ov_SC03_096_jr_8013FFD8.o,tail5.data.o,ov_SC03_096_jr_8015444C.o,tail6.data.o,ov_SC03_096_jr_80154C24.o,tail7.data.o,ov_SC03_096_jr_801588CC.o,tail8.data.o,ov_SC03_096_jr_80159C84.o,tail9.data.o,ov_SC03_096_jr_8015A3C8.o,tail10.data.o,ov_SC03_096_jr_8015AE2C.o,tail11.data.o,ov_SC03_096_jr_8015C32C.o,tail12.data.o,ov_SC03_096_jr_8016AB6C.o,tail13.data.o,ov_SC03_096_jr_801734BC.o,tail14.data.o,ov_SC03_096_jr_80178D40.o,tail15.data.o,ov_SC03_096_jr_8017A4AC.o,tail16.data.o,ov_SC03_096_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_096/ov_SC03_096_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_096/ov_SC03_096_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_096/ov_SC03_096_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1471,7 +1471,7 @@ ov_SC03_097_ELF := $(ov_SC03_097_OUT).elf ov_SC03_097_MAPFILE := $(ov_SC03_097_OUT).map ov_SC03_097_LD_SCRIPT := $(ov_SC03_097_OUT).ld ov_SC03_097_SPLAT_YAML := config/splat.ov_SC03_097.yaml -ov_SC03_097_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_097_jr_8012ACE0.o,tail2.data.o,ov_SC03_097_jr_801380E0.o,tail3.data.o,ov_SC03_097_jr_8013F350.o,tail4.data.o,ov_SC03_097_jr_8013FFD8.o,tail5.data.o,ov_SC03_097_jr_8015444C.o,tail6.data.o,ov_SC03_097_jr_80154C24.o,tail7.data.o,ov_SC03_097_jr_80159C84.o,tail8.data.o,ov_SC03_097_jr_8015A3C8.o,tail9.data.o,ov_SC03_097_jr_8015AE2C.o,tail10.data.o,ov_SC03_097_jr_8015C32C.o,tail11.data.o,ov_SC03_097_jr_8016AB6C.o,tail12.data.o,ov_SC03_097_jr_801734BC.o,tail13.data.o,ov_SC03_097_jr_80178D40.o,tail14.data.o,ov_SC03_097_jr_8017A4AC.o,tail15.data.o,ov_SC03_097_jr_8017D898.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_097_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_097_jr_8012ACE0.o,tail2.data.o,ov_SC03_097_jr_801380E0.o,tail3.data.o,ov_SC03_097_jr_8013F350.o,tail4.data.o,ov_SC03_097_jr_8013FFD8.o,tail5.data.o,ov_SC03_097_jr_8015444C.o,tail6.data.o,ov_SC03_097_jr_80154C24.o,tail7.data.o,ov_SC03_097_jr_801588CC.o,tail8.data.o,ov_SC03_097_jr_80159C84.o,tail9.data.o,ov_SC03_097_jr_8015A3C8.o,tail10.data.o,ov_SC03_097_jr_8015AE2C.o,tail11.data.o,ov_SC03_097_jr_8015C32C.o,tail12.data.o,ov_SC03_097_jr_8016AB6C.o,tail13.data.o,ov_SC03_097_jr_801734BC.o,tail14.data.o,ov_SC03_097_jr_80178D40.o,tail15.data.o,ov_SC03_097_jr_8017A4AC.o,tail16.data.o,ov_SC03_097_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_097/ov_SC03_097_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_097/ov_SC03_097_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_097/ov_SC03_097_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1496,7 +1496,7 @@ ov_SC03_098_ELF := $(ov_SC03_098_OUT).elf ov_SC03_098_MAPFILE := $(ov_SC03_098_OUT).map ov_SC03_098_LD_SCRIPT := $(ov_SC03_098_OUT).ld ov_SC03_098_SPLAT_YAML := config/splat.ov_SC03_098.yaml -ov_SC03_098_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_098_jr_8012ACE0.o,tail2.data.o,ov_SC03_098_jr_801380E0.o,tail3.data.o,ov_SC03_098_jr_8013F350.o,tail4.data.o,ov_SC03_098_jr_8013FFD8.o,tail5.data.o,ov_SC03_098_jr_8015444C.o,tail6.data.o,ov_SC03_098_jr_80154C24.o,tail7.data.o,ov_SC03_098_jr_80159C84.o,tail8.data.o,ov_SC03_098_jr_8015A3C8.o,tail9.data.o,ov_SC03_098_jr_8015AE2C.o,tail10.data.o,ov_SC03_098_jr_8015C32C.o,tail11.data.o,ov_SC03_098_jr_8016AB6C.o,tail12.data.o,ov_SC03_098_jr_801734BC.o,tail13.data.o,ov_SC03_098_jr_80178D40.o,tail14.data.o,ov_SC03_098_jr_8017A4AC.o,tail15.data.o,ov_SC03_098_jr_8017D898.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_098_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_098_jr_8012ACE0.o,tail2.data.o,ov_SC03_098_jr_801380E0.o,tail3.data.o,ov_SC03_098_jr_8013F350.o,tail4.data.o,ov_SC03_098_jr_8013FFD8.o,tail5.data.o,ov_SC03_098_jr_8015444C.o,tail6.data.o,ov_SC03_098_jr_80154C24.o,tail7.data.o,ov_SC03_098_jr_801588CC.o,tail8.data.o,ov_SC03_098_jr_80159C84.o,tail9.data.o,ov_SC03_098_jr_8015A3C8.o,tail10.data.o,ov_SC03_098_jr_8015AE2C.o,tail11.data.o,ov_SC03_098_jr_8015C32C.o,tail12.data.o,ov_SC03_098_jr_8016AB6C.o,tail13.data.o,ov_SC03_098_jr_801734BC.o,tail14.data.o,ov_SC03_098_jr_80178D40.o,tail15.data.o,ov_SC03_098_jr_8017A4AC.o,tail16.data.o,ov_SC03_098_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_098/ov_SC03_098_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_098/ov_SC03_098_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_098/ov_SC03_098_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1521,7 +1521,7 @@ ov_SC03_099_ELF := $(ov_SC03_099_OUT).elf ov_SC03_099_MAPFILE := $(ov_SC03_099_OUT).map ov_SC03_099_LD_SCRIPT := $(ov_SC03_099_OUT).ld ov_SC03_099_SPLAT_YAML := config/splat.ov_SC03_099.yaml -ov_SC03_099_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_099_jr_8012ACE0.o,tail2.data.o,ov_SC03_099_jr_801380E0.o,tail3.data.o,ov_SC03_099_jr_8013F350.o,tail4.data.o,ov_SC03_099_jr_8013FFD8.o,tail5.data.o,ov_SC03_099_jr_8015444C.o,tail6.data.o,ov_SC03_099_jr_80154C24.o,tail7.data.o,ov_SC03_099_jr_80159C84.o,tail8.data.o,ov_SC03_099_jr_8015A3C8.o,tail9.data.o,ov_SC03_099_jr_8015AE2C.o,tail10.data.o,ov_SC03_099_jr_8015C32C.o,tail11.data.o,ov_SC03_099_jr_8016AB6C.o,tail12.data.o,ov_SC03_099_jr_801734BC.o,tail13.data.o,ov_SC03_099_jr_80178D40.o,tail14.data.o,ov_SC03_099_jr_8017A4AC.o,tail15.data.o,ov_SC03_099_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_099_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_099_jr_8012ACE0.o,tail2.data.o,ov_SC03_099_jr_801380E0.o,tail3.data.o,ov_SC03_099_jr_8013F350.o,tail4.data.o,ov_SC03_099_jr_8013FFD8.o,tail5.data.o,ov_SC03_099_jr_8015444C.o,tail6.data.o,ov_SC03_099_jr_80154C24.o,tail7.data.o,ov_SC03_099_jr_801588CC.o,tail8.data.o,ov_SC03_099_jr_80159C84.o,tail9.data.o,ov_SC03_099_jr_8015A3C8.o,tail10.data.o,ov_SC03_099_jr_8015AE2C.o,tail11.data.o,ov_SC03_099_jr_8015C32C.o,tail12.data.o,ov_SC03_099_jr_8016AB6C.o,tail13.data.o,ov_SC03_099_jr_801734BC.o,tail14.data.o,ov_SC03_099_jr_80178D40.o,tail15.data.o,ov_SC03_099_jr_8017A4AC.o,tail16.data.o,ov_SC03_099_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_099/ov_SC03_099_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_099/ov_SC03_099_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_099/ov_SC03_099_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1546,7 +1546,7 @@ ov_SC03_100_ELF := $(ov_SC03_100_OUT).elf ov_SC03_100_MAPFILE := $(ov_SC03_100_OUT).map ov_SC03_100_LD_SCRIPT := $(ov_SC03_100_OUT).ld ov_SC03_100_SPLAT_YAML := config/splat.ov_SC03_100.yaml -ov_SC03_100_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_100_jr_8012ACE0.o,tail2.data.o,ov_SC03_100_jr_801380E0.o,tail3.data.o,ov_SC03_100_jr_8013F350.o,tail4.data.o,ov_SC03_100_jr_8013FFD8.o,tail5.data.o,ov_SC03_100_jr_8015444C.o,tail6.data.o,ov_SC03_100_jr_80154C24.o,tail7.data.o,ov_SC03_100_jr_80159C84.o,tail8.data.o,ov_SC03_100_jr_8015A3C8.o,tail9.data.o,ov_SC03_100_jr_8015AE2C.o,tail10.data.o,ov_SC03_100_jr_8015C32C.o,tail11.data.o,ov_SC03_100_jr_8016AB6C.o,tail12.data.o,ov_SC03_100_jr_801734BC.o,tail13.data.o,ov_SC03_100_jr_80178D40.o,tail14.data.o,ov_SC03_100_jr_8017A4AC.o,tail15.data.o,ov_SC03_100_jr_8017D898.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_100_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_100_jr_8012ACE0.o,tail2.data.o,ov_SC03_100_jr_801380E0.o,tail3.data.o,ov_SC03_100_jr_8013F350.o,tail4.data.o,ov_SC03_100_jr_8013FFD8.o,tail5.data.o,ov_SC03_100_jr_8015444C.o,tail6.data.o,ov_SC03_100_jr_80154C24.o,tail7.data.o,ov_SC03_100_jr_801588CC.o,tail8.data.o,ov_SC03_100_jr_80159C84.o,tail9.data.o,ov_SC03_100_jr_8015A3C8.o,tail10.data.o,ov_SC03_100_jr_8015AE2C.o,tail11.data.o,ov_SC03_100_jr_8015C32C.o,tail12.data.o,ov_SC03_100_jr_8016AB6C.o,tail13.data.o,ov_SC03_100_jr_801734BC.o,tail14.data.o,ov_SC03_100_jr_80178D40.o,tail15.data.o,ov_SC03_100_jr_8017A4AC.o,tail16.data.o,ov_SC03_100_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_100/ov_SC03_100_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_100/ov_SC03_100_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_100/ov_SC03_100_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1571,7 +1571,7 @@ ov_SC03_101_ELF := $(ov_SC03_101_OUT).elf ov_SC03_101_MAPFILE := $(ov_SC03_101_OUT).map ov_SC03_101_LD_SCRIPT := $(ov_SC03_101_OUT).ld ov_SC03_101_SPLAT_YAML := config/splat.ov_SC03_101.yaml -ov_SC03_101_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_101_jr_8012ACE0.o,tail2.data.o,ov_SC03_101_jr_801380E0.o,tail3.data.o,ov_SC03_101_jr_8013F350.o,tail4.data.o,ov_SC03_101_jr_8013FFD8.o,tail5.data.o,ov_SC03_101_jr_8015444C.o,tail6.data.o,ov_SC03_101_jr_80154C24.o,tail7.data.o,ov_SC03_101_jr_80159C84.o,tail8.data.o,ov_SC03_101_jr_8015A3C8.o,tail9.data.o,ov_SC03_101_jr_8015AE2C.o,tail10.data.o,ov_SC03_101_jr_8015C32C.o,tail11.data.o,ov_SC03_101_jr_8016AB6C.o,tail12.data.o,ov_SC03_101_jr_801734BC.o,tail13.data.o,ov_SC03_101_jr_80178D40.o,tail14.data.o,ov_SC03_101_jr_8017A4AC.o,tail15.data.o,ov_SC03_101_jr_8017CA80.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_101_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_101_jr_8012ACE0.o,tail2.data.o,ov_SC03_101_jr_801380E0.o,tail3.data.o,ov_SC03_101_jr_8013F350.o,tail4.data.o,ov_SC03_101_jr_8013FFD8.o,tail5.data.o,ov_SC03_101_jr_8015444C.o,tail6.data.o,ov_SC03_101_jr_80154C24.o,tail7.data.o,ov_SC03_101_jr_801588CC.o,tail8.data.o,ov_SC03_101_jr_80159C84.o,tail9.data.o,ov_SC03_101_jr_8015A3C8.o,tail10.data.o,ov_SC03_101_jr_8015AE2C.o,tail11.data.o,ov_SC03_101_jr_8015C32C.o,tail12.data.o,ov_SC03_101_jr_8016AB6C.o,tail13.data.o,ov_SC03_101_jr_801734BC.o,tail14.data.o,ov_SC03_101_jr_80178D40.o,tail15.data.o,ov_SC03_101_jr_8017A4AC.o,tail16.data.o,ov_SC03_101_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_101/ov_SC03_101_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_101/ov_SC03_101_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_101/ov_SC03_101_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1596,7 +1596,7 @@ ov_SC03_102_ELF := $(ov_SC03_102_OUT).elf ov_SC03_102_MAPFILE := $(ov_SC03_102_OUT).map ov_SC03_102_LD_SCRIPT := $(ov_SC03_102_OUT).ld ov_SC03_102_SPLAT_YAML := config/splat.ov_SC03_102.yaml -ov_SC03_102_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_102_jr_8012ACE0.o,tail2.data.o,ov_SC03_102_jr_801380E0.o,tail3.data.o,ov_SC03_102_jr_8013F350.o,tail4.data.o,ov_SC03_102_jr_8013FFD8.o,tail5.data.o,ov_SC03_102_jr_8015444C.o,tail6.data.o,ov_SC03_102_jr_80154C24.o,tail7.data.o,ov_SC03_102_jr_80159C84.o,tail8.data.o,ov_SC03_102_jr_8015A3C8.o,tail9.data.o,ov_SC03_102_jr_8015AE2C.o,tail10.data.o,ov_SC03_102_jr_8015C32C.o,tail11.data.o,ov_SC03_102_jr_8016AB6C.o,tail12.data.o,ov_SC03_102_jr_801734BC.o,tail13.data.o,ov_SC03_102_jr_80178D40.o,tail14.data.o,ov_SC03_102_jr_8017A4AC.o,tail15.data.o,ov_SC03_102_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_102_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_102_jr_8012ACE0.o,tail2.data.o,ov_SC03_102_jr_801380E0.o,tail3.data.o,ov_SC03_102_jr_8013F350.o,tail4.data.o,ov_SC03_102_jr_8013FFD8.o,tail5.data.o,ov_SC03_102_jr_8015444C.o,tail6.data.o,ov_SC03_102_jr_80154C24.o,tail7.data.o,ov_SC03_102_jr_801588CC.o,tail8.data.o,ov_SC03_102_jr_80159C84.o,tail9.data.o,ov_SC03_102_jr_8015A3C8.o,tail10.data.o,ov_SC03_102_jr_8015AE2C.o,tail11.data.o,ov_SC03_102_jr_8015C32C.o,tail12.data.o,ov_SC03_102_jr_8016AB6C.o,tail13.data.o,ov_SC03_102_jr_801734BC.o,tail14.data.o,ov_SC03_102_jr_80178D40.o,tail15.data.o,ov_SC03_102_jr_8017A4AC.o,tail16.data.o,ov_SC03_102_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_102/ov_SC03_102_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_102/ov_SC03_102_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_102/ov_SC03_102_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1621,7 +1621,7 @@ ov_SC03_103_ELF := $(ov_SC03_103_OUT).elf ov_SC03_103_MAPFILE := $(ov_SC03_103_OUT).map ov_SC03_103_LD_SCRIPT := $(ov_SC03_103_OUT).ld ov_SC03_103_SPLAT_YAML := config/splat.ov_SC03_103.yaml -ov_SC03_103_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_103_jr_8012ACE0.o,tail2.data.o,ov_SC03_103_jr_801380E0.o,tail3.data.o,ov_SC03_103_jr_8013F350.o,tail4.data.o,ov_SC03_103_jr_8015444C.o,tail5.data.o,ov_SC03_103_jr_80154C24.o,tail6.data.o,ov_SC03_103_jr_80159C84.o,tail7.data.o,ov_SC03_103_jr_8015A3C8.o,tail8.data.o,ov_SC03_103_jr_8015AE2C.o,tail9.data.o,ov_SC03_103_jr_8015C32C.o,tail10.data.o,ov_SC03_103_jr_8016AB6C.o,tail11.data.o,ov_SC03_103_jr_801734BC.o,tail12.data.o,ov_SC03_103_jr_80178D40.o,tail13.data.o,ov_SC03_103_jr_8017A4AC.o,tail14.data.o,ov_SC03_103_jr_8017C294.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_103_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_103_jr_8012ACE0.o,tail2.data.o,ov_SC03_103_jr_801380E0.o,tail3.data.o,ov_SC03_103_jr_8013F350.o,tail4.data.o,ov_SC03_103_jr_8015444C.o,tail5.data.o,ov_SC03_103_jr_80154C24.o,tail6.data.o,ov_SC03_103_jr_801588CC.o,tail7.data.o,ov_SC03_103_jr_80159C84.o,tail8.data.o,ov_SC03_103_jr_8015A3C8.o,tail9.data.o,ov_SC03_103_jr_8015AE2C.o,tail10.data.o,ov_SC03_103_jr_8015C32C.o,tail11.data.o,ov_SC03_103_jr_8016AB6C.o,tail12.data.o,ov_SC03_103_jr_801734BC.o,tail13.data.o,ov_SC03_103_jr_80178D40.o,tail14.data.o,ov_SC03_103_jr_8017A4AC.o,tail15.data.o,ov_SC03_103_jr_8017C294.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_103/ov_SC03_103_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_103/ov_SC03_103_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_103/ov_SC03_103_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1646,7 +1646,7 @@ ov_SC03_104_ELF := $(ov_SC03_104_OUT).elf ov_SC03_104_MAPFILE := $(ov_SC03_104_OUT).map ov_SC03_104_LD_SCRIPT := $(ov_SC03_104_OUT).ld ov_SC03_104_SPLAT_YAML := config/splat.ov_SC03_104.yaml -ov_SC03_104_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_104_jr_8012ACE0.o,tail2.data.o,ov_SC03_104_jr_801380E0.o,tail3.data.o,ov_SC03_104_jr_8013F350.o,tail4.data.o,ov_SC03_104_jr_8013FFD8.o,tail5.data.o,ov_SC03_104_jr_8015444C.o,tail6.data.o,ov_SC03_104_jr_80154C24.o,tail7.data.o,ov_SC03_104_jr_80159C84.o,tail8.data.o,ov_SC03_104_jr_8015A3C8.o,tail9.data.o,ov_SC03_104_jr_8015AE2C.o,tail10.data.o,ov_SC03_104_jr_8015C32C.o,tail11.data.o,ov_SC03_104_jr_8016AB6C.o,tail12.data.o,ov_SC03_104_jr_801734BC.o,tail13.data.o,ov_SC03_104_jr_80178D40.o,tail14.data.o,ov_SC03_104_jr_8017A4AC.o,tail15.data.o,ov_SC03_104_jr_8017CA80.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_104_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_104_jr_8012ACE0.o,tail2.data.o,ov_SC03_104_jr_801380E0.o,tail3.data.o,ov_SC03_104_jr_8013F350.o,tail4.data.o,ov_SC03_104_jr_8013FFD8.o,tail5.data.o,ov_SC03_104_jr_8015444C.o,tail6.data.o,ov_SC03_104_jr_80154C24.o,tail7.data.o,ov_SC03_104_jr_801588CC.o,tail8.data.o,ov_SC03_104_jr_80159C84.o,tail9.data.o,ov_SC03_104_jr_8015A3C8.o,tail10.data.o,ov_SC03_104_jr_8015AE2C.o,tail11.data.o,ov_SC03_104_jr_8015C32C.o,tail12.data.o,ov_SC03_104_jr_8016AB6C.o,tail13.data.o,ov_SC03_104_jr_801734BC.o,tail14.data.o,ov_SC03_104_jr_80178D40.o,tail15.data.o,ov_SC03_104_jr_8017A4AC.o,tail16.data.o,ov_SC03_104_jr_8017CA80.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_104/ov_SC03_104_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_104/ov_SC03_104_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_104/ov_SC03_104_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1671,7 +1671,7 @@ ov_SC03_105_ELF := $(ov_SC03_105_OUT).elf ov_SC03_105_MAPFILE := $(ov_SC03_105_OUT).map ov_SC03_105_LD_SCRIPT := $(ov_SC03_105_OUT).ld ov_SC03_105_SPLAT_YAML := config/splat.ov_SC03_105.yaml -ov_SC03_105_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_105_jr_8012ACE0.o,tail2.data.o,ov_SC03_105_jr_801380E0.o,tail3.data.o,ov_SC03_105_jr_8013F350.o,tail4.data.o,ov_SC03_105_jr_8013FFD8.o,tail5.data.o,ov_SC03_105_jr_8015444C.o,tail6.data.o,ov_SC03_105_jr_80154C24.o,tail7.data.o,ov_SC03_105_jr_80159C84.o,tail8.data.o,ov_SC03_105_jr_8015A3C8.o,tail9.data.o,ov_SC03_105_jr_8015AE2C.o,tail10.data.o,ov_SC03_105_jr_8015C32C.o,tail11.data.o,ov_SC03_105_jr_8016AB6C.o,tail12.data.o,ov_SC03_105_jr_801734BC.o,tail13.data.o,ov_SC03_105_jr_80178D40.o,tail14.data.o,ov_SC03_105_jr_8017A4AC.o,tail15.data.o,ov_SC03_105_jr_8017C8D0.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_105_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_105_jr_8012ACE0.o,tail2.data.o,ov_SC03_105_jr_801380E0.o,tail3.data.o,ov_SC03_105_jr_8013F350.o,tail4.data.o,ov_SC03_105_jr_8013FFD8.o,tail5.data.o,ov_SC03_105_jr_8015444C.o,tail6.data.o,ov_SC03_105_jr_80154C24.o,tail7.data.o,ov_SC03_105_jr_801588CC.o,tail8.data.o,ov_SC03_105_jr_80159C84.o,tail9.data.o,ov_SC03_105_jr_8015A3C8.o,tail10.data.o,ov_SC03_105_jr_8015AE2C.o,tail11.data.o,ov_SC03_105_jr_8015C32C.o,tail12.data.o,ov_SC03_105_jr_8016AB6C.o,tail13.data.o,ov_SC03_105_jr_801734BC.o,tail14.data.o,ov_SC03_105_jr_80178D40.o,tail15.data.o,ov_SC03_105_jr_8017A4AC.o,tail16.data.o,ov_SC03_105_jr_8017C8D0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_105/ov_SC03_105_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_105/ov_SC03_105_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_105/ov_SC03_105_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1696,7 +1696,7 @@ ov_SC03_108_ELF := $(ov_SC03_108_OUT).elf ov_SC03_108_MAPFILE := $(ov_SC03_108_OUT).map ov_SC03_108_LD_SCRIPT := $(ov_SC03_108_OUT).ld ov_SC03_108_SPLAT_YAML := config/splat.ov_SC03_108.yaml -ov_SC03_108_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_108_jr_8012ACE0.o,tail2.data.o,ov_SC03_108_jr_801380E0.o,tail3.data.o,ov_SC03_108_jr_8013F350.o,tail4.data.o,ov_SC03_108_jr_8013FFD8.o,tail5.data.o,ov_SC03_108_jr_8015444C.o,tail6.data.o,ov_SC03_108_jr_80154C24.o,tail7.data.o,ov_SC03_108_jr_80159C84.o,tail8.data.o,ov_SC03_108_jr_8015A3C8.o,tail9.data.o,ov_SC03_108_jr_8015AE2C.o,tail10.data.o,ov_SC03_108_jr_8015C32C.o,tail11.data.o,ov_SC03_108_jr_8016AB6C.o,tail12.data.o,ov_SC03_108_jr_801734BC.o,tail13.data.o,ov_SC03_108_jr_80178D40.o,tail14.data.o,ov_SC03_108_jr_8017A4AC.o,tail15.data.o,ov_SC03_108_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_108_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_108_jr_8012ACE0.o,tail2.data.o,ov_SC03_108_jr_801380E0.o,tail3.data.o,ov_SC03_108_jr_8013F350.o,tail4.data.o,ov_SC03_108_jr_8013FFD8.o,tail5.data.o,ov_SC03_108_jr_8015444C.o,tail6.data.o,ov_SC03_108_jr_80154C24.o,tail7.data.o,ov_SC03_108_jr_801588CC.o,tail8.data.o,ov_SC03_108_jr_80159C84.o,tail9.data.o,ov_SC03_108_jr_8015A3C8.o,tail10.data.o,ov_SC03_108_jr_8015AE2C.o,tail11.data.o,ov_SC03_108_jr_8015C32C.o,tail12.data.o,ov_SC03_108_jr_8016AB6C.o,tail13.data.o,ov_SC03_108_jr_801734BC.o,tail14.data.o,ov_SC03_108_jr_80178D40.o,tail15.data.o,ov_SC03_108_jr_8017A4AC.o,tail16.data.o,ov_SC03_108_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_108/ov_SC03_108_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_108/ov_SC03_108_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_108/ov_SC03_108_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1721,7 +1721,7 @@ ov_SC03_109_ELF := $(ov_SC03_109_OUT).elf ov_SC03_109_MAPFILE := $(ov_SC03_109_OUT).map ov_SC03_109_LD_SCRIPT := $(ov_SC03_109_OUT).ld ov_SC03_109_SPLAT_YAML := config/splat.ov_SC03_109.yaml -ov_SC03_109_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_109_jr_8012ACE0.o,tail2.data.o,ov_SC03_109_jr_801380E0.o,tail3.data.o,ov_SC03_109_jr_8013F350.o,tail4.data.o,ov_SC03_109_jr_8013FFD8.o,tail5.data.o,ov_SC03_109_jr_8015444C.o,tail6.data.o,ov_SC03_109_jr_80154C24.o,tail7.data.o,ov_SC03_109_jr_80159C84.o,tail8.data.o,ov_SC03_109_jr_8015A3C8.o,tail9.data.o,ov_SC03_109_jr_8015AE2C.o,tail10.data.o,ov_SC03_109_jr_8015C32C.o,tail11.data.o,ov_SC03_109_jr_8016AB6C.o,tail12.data.o,ov_SC03_109_jr_801734BC.o,tail13.data.o,ov_SC03_109_jr_80178D40.o,tail14.data.o,ov_SC03_109_jr_8017A4AC.o,tail15.data.o,ov_SC03_109_jr_8017C180.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_109_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_109_jr_8012ACE0.o,tail2.data.o,ov_SC03_109_jr_801380E0.o,tail3.data.o,ov_SC03_109_jr_8013F350.o,tail4.data.o,ov_SC03_109_jr_8013FFD8.o,tail5.data.o,ov_SC03_109_jr_8015444C.o,tail6.data.o,ov_SC03_109_jr_80154C24.o,tail7.data.o,ov_SC03_109_jr_801588CC.o,tail8.data.o,ov_SC03_109_jr_80159C84.o,tail9.data.o,ov_SC03_109_jr_8015A3C8.o,tail10.data.o,ov_SC03_109_jr_8015AE2C.o,tail11.data.o,ov_SC03_109_jr_8015C32C.o,tail12.data.o,ov_SC03_109_jr_8016AB6C.o,tail13.data.o,ov_SC03_109_jr_801734BC.o,tail14.data.o,ov_SC03_109_jr_80178D40.o,tail15.data.o,ov_SC03_109_jr_8017A4AC.o,tail16.data.o,ov_SC03_109_jr_8017C180.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_109/ov_SC03_109_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_109/ov_SC03_109_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_109/ov_SC03_109_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1746,7 +1746,7 @@ ov_SC03_110_ELF := $(ov_SC03_110_OUT).elf ov_SC03_110_MAPFILE := $(ov_SC03_110_OUT).map ov_SC03_110_LD_SCRIPT := $(ov_SC03_110_OUT).ld ov_SC03_110_SPLAT_YAML := config/splat.ov_SC03_110.yaml -ov_SC03_110_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_110_jr_8012ACE0.o,tail2.data.o,ov_SC03_110_jr_801380E0.o,tail3.data.o,ov_SC03_110_jr_8013F350.o,tail4.data.o,ov_SC03_110_jr_8013FFD8.o,tail5.data.o,ov_SC03_110_jr_8015444C.o,tail6.data.o,ov_SC03_110_jr_80154C24.o,tail7.data.o,ov_SC03_110_jr_80159C84.o,tail8.data.o,ov_SC03_110_jr_8015A3C8.o,tail9.data.o,ov_SC03_110_jr_8015AE2C.o,tail10.data.o,ov_SC03_110_jr_8015C32C.o,tail11.data.o,ov_SC03_110_jr_8016AB6C.o,tail12.data.o,ov_SC03_110_jr_801734BC.o,tail13.data.o,ov_SC03_110_jr_80178D40.o,tail14.data.o,ov_SC03_110_jr_8017A4AC.o,tail15.data.o,ov_SC03_110_jr_8017D898.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_110_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_110_jr_8012ACE0.o,tail2.data.o,ov_SC03_110_jr_801380E0.o,tail3.data.o,ov_SC03_110_jr_8013F350.o,tail4.data.o,ov_SC03_110_jr_8013FFD8.o,tail5.data.o,ov_SC03_110_jr_8015444C.o,tail6.data.o,ov_SC03_110_jr_80154C24.o,tail7.data.o,ov_SC03_110_jr_801588CC.o,tail8.data.o,ov_SC03_110_jr_80159C84.o,tail9.data.o,ov_SC03_110_jr_8015A3C8.o,tail10.data.o,ov_SC03_110_jr_8015AE2C.o,tail11.data.o,ov_SC03_110_jr_8015C32C.o,tail12.data.o,ov_SC03_110_jr_8016AB6C.o,tail13.data.o,ov_SC03_110_jr_801734BC.o,tail14.data.o,ov_SC03_110_jr_80178D40.o,tail15.data.o,ov_SC03_110_jr_8017A4AC.o,tail16.data.o,ov_SC03_110_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_110/ov_SC03_110_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_110/ov_SC03_110_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_110/ov_SC03_110_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1771,7 +1771,7 @@ ov_SC03_111_ELF := $(ov_SC03_111_OUT).elf ov_SC03_111_MAPFILE := $(ov_SC03_111_OUT).map ov_SC03_111_LD_SCRIPT := $(ov_SC03_111_OUT).ld ov_SC03_111_SPLAT_YAML := config/splat.ov_SC03_111.yaml -ov_SC03_111_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_111_jr_8012ACE0.o,tail2.data.o,ov_SC03_111_jr_801380E0.o,tail3.data.o,ov_SC03_111_jr_8013F350.o,tail4.data.o,ov_SC03_111_jr_8013FFD8.o,tail5.data.o,ov_SC03_111_jr_8015444C.o,tail6.data.o,ov_SC03_111_jr_80154C24.o,tail7.data.o,ov_SC03_111_jr_80159C84.o,tail8.data.o,ov_SC03_111_jr_8015A3C8.o,tail9.data.o,ov_SC03_111_jr_8015AE2C.o,tail10.data.o,ov_SC03_111_jr_8015C32C.o,tail11.data.o,ov_SC03_111_jr_8016AB6C.o,tail12.data.o,ov_SC03_111_jr_801734BC.o,tail13.data.o,ov_SC03_111_jr_80178D40.o,tail14.data.o,ov_SC03_111_jr_8017A4AC.o,tail15.data.o,ov_SC03_111_jr_8017EC58.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_111_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_111_jr_8012ACE0.o,tail2.data.o,ov_SC03_111_jr_801380E0.o,tail3.data.o,ov_SC03_111_jr_8013F350.o,tail4.data.o,ov_SC03_111_jr_8013FFD8.o,tail5.data.o,ov_SC03_111_jr_8015444C.o,tail6.data.o,ov_SC03_111_jr_80154C24.o,tail7.data.o,ov_SC03_111_jr_801588CC.o,tail8.data.o,ov_SC03_111_jr_80159C84.o,tail9.data.o,ov_SC03_111_jr_8015A3C8.o,tail10.data.o,ov_SC03_111_jr_8015AE2C.o,tail11.data.o,ov_SC03_111_jr_8015C32C.o,tail12.data.o,ov_SC03_111_jr_8016AB6C.o,tail13.data.o,ov_SC03_111_jr_801734BC.o,tail14.data.o,ov_SC03_111_jr_80178D40.o,tail15.data.o,ov_SC03_111_jr_8017A4AC.o,tail16.data.o,ov_SC03_111_jr_8017EC58.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_111/ov_SC03_111_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_111/ov_SC03_111_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_111/ov_SC03_111_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1796,7 +1796,7 @@ ov_SC03_112_ELF := $(ov_SC03_112_OUT).elf ov_SC03_112_MAPFILE := $(ov_SC03_112_OUT).map ov_SC03_112_LD_SCRIPT := $(ov_SC03_112_OUT).ld ov_SC03_112_SPLAT_YAML := config/splat.ov_SC03_112.yaml -ov_SC03_112_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_112_jr_8012ACE0.o,tail2.data.o,ov_SC03_112_jr_801380E0.o,tail3.data.o,ov_SC03_112_jr_8013F350.o,tail4.data.o,ov_SC03_112_jr_8013FFD8.o,tail5.data.o,ov_SC03_112_jr_8015444C.o,tail6.data.o,ov_SC03_112_jr_80154C24.o,tail7.data.o,ov_SC03_112_jr_80159C84.o,tail8.data.o,ov_SC03_112_jr_8015A3C8.o,tail9.data.o,ov_SC03_112_jr_8015AE2C.o,tail10.data.o,ov_SC03_112_jr_8015C32C.o,tail11.data.o,ov_SC03_112_jr_8016AB6C.o,tail12.data.o,ov_SC03_112_jr_801734BC.o,tail13.data.o,ov_SC03_112_jr_80178D40.o,tail14.data.o,ov_SC03_112_jr_8017A4AC.o,tail15.data.o,ov_SC03_112_jr_8017C294.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_112_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_112_jr_8012ACE0.o,tail2.data.o,ov_SC03_112_jr_801380E0.o,tail3.data.o,ov_SC03_112_jr_8013F350.o,tail4.data.o,ov_SC03_112_jr_8013FFD8.o,tail5.data.o,ov_SC03_112_jr_8015444C.o,tail6.data.o,ov_SC03_112_jr_80154C24.o,tail7.data.o,ov_SC03_112_jr_801588CC.o,tail8.data.o,ov_SC03_112_jr_80159C84.o,tail9.data.o,ov_SC03_112_jr_8015A3C8.o,tail10.data.o,ov_SC03_112_jr_8015AE2C.o,tail11.data.o,ov_SC03_112_jr_8015C32C.o,tail12.data.o,ov_SC03_112_jr_8016AB6C.o,tail13.data.o,ov_SC03_112_jr_801734BC.o,tail14.data.o,ov_SC03_112_jr_80178D40.o,tail15.data.o,ov_SC03_112_jr_8017A4AC.o,tail16.data.o,ov_SC03_112_jr_8017C294.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_112/ov_SC03_112_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_112/ov_SC03_112_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_112/ov_SC03_112_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1821,7 +1821,7 @@ ov_SC03_113_ELF := $(ov_SC03_113_OUT).elf ov_SC03_113_MAPFILE := $(ov_SC03_113_OUT).map ov_SC03_113_LD_SCRIPT := $(ov_SC03_113_OUT).ld ov_SC03_113_SPLAT_YAML := config/splat.ov_SC03_113.yaml -ov_SC03_113_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_113_jr_8012ACE0.o,tail2.data.o,ov_SC03_113_jr_801380E0.o,tail3.data.o,ov_SC03_113_jr_8013F350.o,tail4.data.o,ov_SC03_113_jr_8013FFD8.o,tail5.data.o,ov_SC03_113_jr_8015444C.o,tail6.data.o,ov_SC03_113_jr_80154C24.o,tail7.data.o,ov_SC03_113_jr_80159C84.o,tail8.data.o,ov_SC03_113_jr_8015A3C8.o,tail9.data.o,ov_SC03_113_jr_8015AE2C.o,tail10.data.o,ov_SC03_113_jr_8015C32C.o,tail11.data.o,ov_SC03_113_jr_8016AB6C.o,tail12.data.o,ov_SC03_113_jr_801734BC.o,tail13.data.o,ov_SC03_113_jr_80178D40.o,tail14.data.o,ov_SC03_113_jr_8017A4AC.o,tail15.data.o,ov_SC03_113_jr_8017C294.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_113_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_113_jr_8012ACE0.o,tail2.data.o,ov_SC03_113_jr_801380E0.o,tail3.data.o,ov_SC03_113_jr_8013F350.o,tail4.data.o,ov_SC03_113_jr_8013FFD8.o,tail5.data.o,ov_SC03_113_jr_8015444C.o,tail6.data.o,ov_SC03_113_jr_80154C24.o,tail7.data.o,ov_SC03_113_jr_801588CC.o,tail8.data.o,ov_SC03_113_jr_80159C84.o,tail9.data.o,ov_SC03_113_jr_8015A3C8.o,tail10.data.o,ov_SC03_113_jr_8015AE2C.o,tail11.data.o,ov_SC03_113_jr_8015C32C.o,tail12.data.o,ov_SC03_113_jr_8016AB6C.o,tail13.data.o,ov_SC03_113_jr_801734BC.o,tail14.data.o,ov_SC03_113_jr_80178D40.o,tail15.data.o,ov_SC03_113_jr_8017A4AC.o,tail16.data.o,ov_SC03_113_jr_8017C294.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_113/ov_SC03_113_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_113/ov_SC03_113_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_113/ov_SC03_113_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1846,7 +1846,7 @@ ov_SC03_114_ELF := $(ov_SC03_114_OUT).elf ov_SC03_114_MAPFILE := $(ov_SC03_114_OUT).map ov_SC03_114_LD_SCRIPT := $(ov_SC03_114_OUT).ld ov_SC03_114_SPLAT_YAML := config/splat.ov_SC03_114.yaml -ov_SC03_114_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_114_jr_8012ACE0.o,tail2.data.o,ov_SC03_114_jr_801380E0.o,tail3.data.o,ov_SC03_114_jr_8013F350.o,tail4.data.o,ov_SC03_114_jr_8013FFD8.o,tail5.data.o,ov_SC03_114_jr_8015444C.o,tail6.data.o,ov_SC03_114_jr_80154C24.o,tail7.data.o,ov_SC03_114_jr_80159C84.o,tail8.data.o,ov_SC03_114_jr_8015A3C8.o,tail9.data.o,ov_SC03_114_jr_8015AE2C.o,tail10.data.o,ov_SC03_114_jr_8015C32C.o,tail11.data.o,ov_SC03_114_jr_8016AB6C.o,tail12.data.o,ov_SC03_114_jr_801734BC.o,tail13.data.o,ov_SC03_114_jr_80178D40.o,tail14.data.o,ov_SC03_114_jr_8017A4AC.o,tail15.data.o,ov_SC03_114_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_114_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_114_jr_8012ACE0.o,tail2.data.o,ov_SC03_114_jr_801380E0.o,tail3.data.o,ov_SC03_114_jr_8013F350.o,tail4.data.o,ov_SC03_114_jr_8013FFD8.o,tail5.data.o,ov_SC03_114_jr_8015444C.o,tail6.data.o,ov_SC03_114_jr_80154C24.o,tail7.data.o,ov_SC03_114_jr_801588CC.o,tail8.data.o,ov_SC03_114_jr_80159C84.o,tail9.data.o,ov_SC03_114_jr_8015A3C8.o,tail10.data.o,ov_SC03_114_jr_8015AE2C.o,tail11.data.o,ov_SC03_114_jr_8015C32C.o,tail12.data.o,ov_SC03_114_jr_8016AB6C.o,tail13.data.o,ov_SC03_114_jr_801734BC.o,tail14.data.o,ov_SC03_114_jr_80178D40.o,tail15.data.o,ov_SC03_114_jr_8017A4AC.o,tail16.data.o,ov_SC03_114_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_114/ov_SC03_114_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_114/ov_SC03_114_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_114/ov_SC03_114_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1871,7 +1871,7 @@ ov_SC03_115_ELF := $(ov_SC03_115_OUT).elf ov_SC03_115_MAPFILE := $(ov_SC03_115_OUT).map ov_SC03_115_LD_SCRIPT := $(ov_SC03_115_OUT).ld ov_SC03_115_SPLAT_YAML := config/splat.ov_SC03_115.yaml -ov_SC03_115_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_115_jr_8012ACE0.o,tail2.data.o,ov_SC03_115_jr_801380E0.o,tail3.data.o,ov_SC03_115_jr_8013F350.o,tail4.data.o,ov_SC03_115_jr_8013FFD8.o,tail5.data.o,ov_SC03_115_jr_8015444C.o,tail6.data.o,ov_SC03_115_jr_80154C24.o,tail7.data.o,ov_SC03_115_jr_80159C84.o,tail8.data.o,ov_SC03_115_jr_8015A3C8.o,tail9.data.o,ov_SC03_115_jr_8015AE2C.o,tail10.data.o,ov_SC03_115_jr_8015C32C.o,tail11.data.o,ov_SC03_115_jr_8016AB6C.o,tail12.data.o,ov_SC03_115_jr_801734BC.o,tail13.data.o,ov_SC03_115_jr_80178D40.o,tail14.data.o,ov_SC03_115_jr_8017A4AC.o,tail15.data.o,ov_SC03_115_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_115_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_115_jr_8012ACE0.o,tail2.data.o,ov_SC03_115_jr_801380E0.o,tail3.data.o,ov_SC03_115_jr_8013F350.o,tail4.data.o,ov_SC03_115_jr_8013FFD8.o,tail5.data.o,ov_SC03_115_jr_8015444C.o,tail6.data.o,ov_SC03_115_jr_80154C24.o,tail7.data.o,ov_SC03_115_jr_801588CC.o,tail8.data.o,ov_SC03_115_jr_80159C84.o,tail9.data.o,ov_SC03_115_jr_8015A3C8.o,tail10.data.o,ov_SC03_115_jr_8015AE2C.o,tail11.data.o,ov_SC03_115_jr_8015C32C.o,tail12.data.o,ov_SC03_115_jr_8016AB6C.o,tail13.data.o,ov_SC03_115_jr_801734BC.o,tail14.data.o,ov_SC03_115_jr_80178D40.o,tail15.data.o,ov_SC03_115_jr_8017A4AC.o,tail16.data.o,ov_SC03_115_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_115/ov_SC03_115_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_115/ov_SC03_115_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_115/ov_SC03_115_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1896,7 +1896,7 @@ ov_SC03_116_ELF := $(ov_SC03_116_OUT).elf ov_SC03_116_MAPFILE := $(ov_SC03_116_OUT).map ov_SC03_116_LD_SCRIPT := $(ov_SC03_116_OUT).ld ov_SC03_116_SPLAT_YAML := config/splat.ov_SC03_116.yaml -ov_SC03_116_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_116_jr_8012ACE0.o,tail2.data.o,ov_SC03_116_jr_801380E0.o,tail3.data.o,ov_SC03_116_jr_8013F350.o,tail4.data.o,ov_SC03_116_jr_8013FFD8.o,tail5.data.o,ov_SC03_116_jr_8015444C.o,tail6.data.o,ov_SC03_116_jr_80154C24.o,tail7.data.o,ov_SC03_116_jr_80159C84.o,tail8.data.o,ov_SC03_116_jr_8015A3C8.o,tail9.data.o,ov_SC03_116_jr_8015AE2C.o,tail10.data.o,ov_SC03_116_jr_8015C32C.o,tail11.data.o,ov_SC03_116_jr_8016AB6C.o,tail12.data.o,ov_SC03_116_jr_801734BC.o,tail13.data.o,ov_SC03_116_jr_80178D40.o,tail14.data.o,ov_SC03_116_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_116_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_116_jr_8012ACE0.o,tail2.data.o,ov_SC03_116_jr_801380E0.o,tail3.data.o,ov_SC03_116_jr_8013F350.o,tail4.data.o,ov_SC03_116_jr_8013FFD8.o,tail5.data.o,ov_SC03_116_jr_8015444C.o,tail6.data.o,ov_SC03_116_jr_80154C24.o,tail7.data.o,ov_SC03_116_jr_801588CC.o,tail8.data.o,ov_SC03_116_jr_80159C84.o,tail9.data.o,ov_SC03_116_jr_8015A3C8.o,tail10.data.o,ov_SC03_116_jr_8015AE2C.o,tail11.data.o,ov_SC03_116_jr_8015C32C.o,tail12.data.o,ov_SC03_116_jr_8016AB6C.o,tail13.data.o,ov_SC03_116_jr_801734BC.o,tail14.data.o,ov_SC03_116_jr_80178D40.o,tail15.data.o,ov_SC03_116_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_116/ov_SC03_116_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_116/ov_SC03_116_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_116/ov_SC03_116_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1921,7 +1921,7 @@ ov_SC03_117_ELF := $(ov_SC03_117_OUT).elf ov_SC03_117_MAPFILE := $(ov_SC03_117_OUT).map ov_SC03_117_LD_SCRIPT := $(ov_SC03_117_OUT).ld ov_SC03_117_SPLAT_YAML := config/splat.ov_SC03_117.yaml -ov_SC03_117_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_117_jr_8012ACE0.o,tail2.data.o,ov_SC03_117_jr_801380E0.o,tail3.data.o,ov_SC03_117_jr_8013F350.o,tail4.data.o,ov_SC03_117_jr_8013FFD8.o,tail5.data.o,ov_SC03_117_jr_8015444C.o,tail6.data.o,ov_SC03_117_jr_80154C24.o,tail7.data.o,ov_SC03_117_jr_80159C84.o,tail8.data.o,ov_SC03_117_jr_8015A3C8.o,tail9.data.o,ov_SC03_117_jr_8015AE2C.o,tail10.data.o,ov_SC03_117_jr_8015C32C.o,tail11.data.o,ov_SC03_117_jr_8016AB6C.o,tail12.data.o,ov_SC03_117_jr_801734BC.o,tail13.data.o,ov_SC03_117_jr_80178D40.o,tail14.data.o,ov_SC03_117_jr_8017A4AC.o,tail15.data.o,ov_SC03_117_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_117_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_117_jr_8012ACE0.o,tail2.data.o,ov_SC03_117_jr_801380E0.o,tail3.data.o,ov_SC03_117_jr_8013F350.o,tail4.data.o,ov_SC03_117_jr_8013FFD8.o,tail5.data.o,ov_SC03_117_jr_8015444C.o,tail6.data.o,ov_SC03_117_jr_80154C24.o,tail7.data.o,ov_SC03_117_jr_801588CC.o,tail8.data.o,ov_SC03_117_jr_80159C84.o,tail9.data.o,ov_SC03_117_jr_8015A3C8.o,tail10.data.o,ov_SC03_117_jr_8015AE2C.o,tail11.data.o,ov_SC03_117_jr_8015C32C.o,tail12.data.o,ov_SC03_117_jr_8016AB6C.o,tail13.data.o,ov_SC03_117_jr_801734BC.o,tail14.data.o,ov_SC03_117_jr_80178D40.o,tail15.data.o,ov_SC03_117_jr_8017A4AC.o,tail16.data.o,ov_SC03_117_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_117/ov_SC03_117_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_117/ov_SC03_117_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_117/ov_SC03_117_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1946,7 +1946,7 @@ ov_SC03_118_ELF := $(ov_SC03_118_OUT).elf ov_SC03_118_MAPFILE := $(ov_SC03_118_OUT).map ov_SC03_118_LD_SCRIPT := $(ov_SC03_118_OUT).ld ov_SC03_118_SPLAT_YAML := config/splat.ov_SC03_118.yaml -ov_SC03_118_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_118_jr_8012ACE0.o,tail2.data.o,ov_SC03_118_jr_801380E0.o,tail3.data.o,ov_SC03_118_jr_8013F350.o,tail4.data.o,ov_SC03_118_jr_8013FFD8.o,tail5.data.o,ov_SC03_118_jr_8015444C.o,tail6.data.o,ov_SC03_118_jr_80154C24.o,tail7.data.o,ov_SC03_118_jr_80159C84.o,tail8.data.o,ov_SC03_118_jr_8015A3C8.o,tail9.data.o,ov_SC03_118_jr_8015AE2C.o,tail10.data.o,ov_SC03_118_jr_8015C32C.o,tail11.data.o,ov_SC03_118_jr_8016AB6C.o,tail12.data.o,ov_SC03_118_jr_801734BC.o,tail13.data.o,ov_SC03_118_jr_80178D40.o,tail14.data.o,ov_SC03_118_jr_8017A4AC.o,tail15.data.o,ov_SC03_118_jr_8017FB84.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_118_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_118_jr_8012ACE0.o,tail2.data.o,ov_SC03_118_jr_801380E0.o,tail3.data.o,ov_SC03_118_jr_8013F350.o,tail4.data.o,ov_SC03_118_jr_8013FFD8.o,tail5.data.o,ov_SC03_118_jr_8015444C.o,tail6.data.o,ov_SC03_118_jr_80154C24.o,tail7.data.o,ov_SC03_118_jr_801588CC.o,tail8.data.o,ov_SC03_118_jr_80159C84.o,tail9.data.o,ov_SC03_118_jr_8015A3C8.o,tail10.data.o,ov_SC03_118_jr_8015AE2C.o,tail11.data.o,ov_SC03_118_jr_8015C32C.o,tail12.data.o,ov_SC03_118_jr_8016AB6C.o,tail13.data.o,ov_SC03_118_jr_801734BC.o,tail14.data.o,ov_SC03_118_jr_80178D40.o,tail15.data.o,ov_SC03_118_jr_8017A4AC.o,tail16.data.o,ov_SC03_118_jr_8017FB84.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_118/ov_SC03_118_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_118/ov_SC03_118_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_118/ov_SC03_118_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1971,7 +1971,7 @@ ov_SC03_119_ELF := $(ov_SC03_119_OUT).elf ov_SC03_119_MAPFILE := $(ov_SC03_119_OUT).map ov_SC03_119_LD_SCRIPT := $(ov_SC03_119_OUT).ld ov_SC03_119_SPLAT_YAML := config/splat.ov_SC03_119.yaml -ov_SC03_119_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_119_jr_8012ACE0.o,tail2.data.o,ov_SC03_119_jr_801380E0.o,tail3.data.o,ov_SC03_119_jr_8013F350.o,tail4.data.o,ov_SC03_119_jr_8013FFD8.o,tail5.data.o,ov_SC03_119_jr_8015444C.o,tail6.data.o,ov_SC03_119_jr_80154C24.o,tail7.data.o,ov_SC03_119_jr_80159C84.o,tail8.data.o,ov_SC03_119_jr_8015A3C8.o,tail9.data.o,ov_SC03_119_jr_8015AE2C.o,tail10.data.o,ov_SC03_119_jr_8015C32C.o,tail11.data.o,ov_SC03_119_jr_8016AB6C.o,tail12.data.o,ov_SC03_119_jr_801734BC.o,tail13.data.o,ov_SC03_119_jr_80178D40.o,tail14.data.o,ov_SC03_119_jr_8017A4AC.o,tail15.data.o,ov_SC03_119_jr_8017FB84.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_119_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_119_jr_8012ACE0.o,tail2.data.o,ov_SC03_119_jr_801380E0.o,tail3.data.o,ov_SC03_119_jr_8013F350.o,tail4.data.o,ov_SC03_119_jr_8013FFD8.o,tail5.data.o,ov_SC03_119_jr_8015444C.o,tail6.data.o,ov_SC03_119_jr_80154C24.o,tail7.data.o,ov_SC03_119_jr_801588CC.o,tail8.data.o,ov_SC03_119_jr_80159C84.o,tail9.data.o,ov_SC03_119_jr_8015A3C8.o,tail10.data.o,ov_SC03_119_jr_8015AE2C.o,tail11.data.o,ov_SC03_119_jr_8015C32C.o,tail12.data.o,ov_SC03_119_jr_8016AB6C.o,tail13.data.o,ov_SC03_119_jr_801734BC.o,tail14.data.o,ov_SC03_119_jr_80178D40.o,tail15.data.o,ov_SC03_119_jr_8017A4AC.o,tail16.data.o,ov_SC03_119_jr_8017FB84.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_119/ov_SC03_119_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_119/ov_SC03_119_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_119/ov_SC03_119_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -1996,7 +1996,7 @@ ov_SC03_121_ELF := $(ov_SC03_121_OUT).elf ov_SC03_121_MAPFILE := $(ov_SC03_121_OUT).map ov_SC03_121_LD_SCRIPT := $(ov_SC03_121_OUT).ld ov_SC03_121_SPLAT_YAML := config/splat.ov_SC03_121.yaml -ov_SC03_121_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_121_jr_8012ACE0.o,tail2.data.o,ov_SC03_121_jr_801380E0.o,tail3.data.o,ov_SC03_121_jr_8013F350.o,tail4.data.o,ov_SC03_121_jr_8013FFD8.o,tail5.data.o,ov_SC03_121_jr_8015444C.o,tail6.data.o,ov_SC03_121_jr_80154C24.o,tail7.data.o,ov_SC03_121_jr_80159C84.o,tail8.data.o,ov_SC03_121_jr_8015A3C8.o,tail9.data.o,ov_SC03_121_jr_8015AE2C.o,tail10.data.o,ov_SC03_121_jr_8015C32C.o,tail11.data.o,ov_SC03_121_jr_8016AB6C.o,tail12.data.o,ov_SC03_121_jr_801734BC.o,tail13.data.o,ov_SC03_121_jr_80178D40.o,tail14.data.o,ov_SC03_121_jr_8017A4AC.o,tail15.data.o,ov_SC03_121_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_121_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_121_jr_8012ACE0.o,tail2.data.o,ov_SC03_121_jr_801380E0.o,tail3.data.o,ov_SC03_121_jr_8013F350.o,tail4.data.o,ov_SC03_121_jr_8013FFD8.o,tail5.data.o,ov_SC03_121_jr_8015444C.o,tail6.data.o,ov_SC03_121_jr_80154C24.o,tail7.data.o,ov_SC03_121_jr_801588CC.o,tail8.data.o,ov_SC03_121_jr_80159C84.o,tail9.data.o,ov_SC03_121_jr_8015A3C8.o,tail10.data.o,ov_SC03_121_jr_8015AE2C.o,tail11.data.o,ov_SC03_121_jr_8015C32C.o,tail12.data.o,ov_SC03_121_jr_8016AB6C.o,tail13.data.o,ov_SC03_121_jr_801734BC.o,tail14.data.o,ov_SC03_121_jr_80178D40.o,tail15.data.o,ov_SC03_121_jr_8017A4AC.o,tail16.data.o,ov_SC03_121_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_121/ov_SC03_121_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_121/ov_SC03_121_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_121/ov_SC03_121_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2021,7 +2021,7 @@ ov_SC03_124_ELF := $(ov_SC03_124_OUT).elf ov_SC03_124_MAPFILE := $(ov_SC03_124_OUT).map ov_SC03_124_LD_SCRIPT := $(ov_SC03_124_OUT).ld ov_SC03_124_SPLAT_YAML := config/splat.ov_SC03_124.yaml -ov_SC03_124_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_124_jr_8012ACE0.o,tail2.data.o,ov_SC03_124_jr_801380E0.o,tail3.data.o,ov_SC03_124_jr_8013F350.o,tail4.data.o,ov_SC03_124_jr_8013FFD8.o,tail5.data.o,ov_SC03_124_jr_8015444C.o,tail6.data.o,ov_SC03_124_jr_80154C24.o,tail7.data.o,ov_SC03_124_jr_80159C84.o,tail8.data.o,ov_SC03_124_jr_8015A3C8.o,tail9.data.o,ov_SC03_124_jr_8015AE2C.o,tail10.data.o,ov_SC03_124_jr_8015C32C.o,tail11.data.o,ov_SC03_124_jr_8016AB6C.o,tail12.data.o,ov_SC03_124_jr_801734BC.o,tail13.data.o,ov_SC03_124_jr_80178D40.o,tail14.data.o,ov_SC03_124_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_124_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_124_jr_8012ACE0.o,tail2.data.o,ov_SC03_124_jr_801380E0.o,tail3.data.o,ov_SC03_124_jr_8013F350.o,tail4.data.o,ov_SC03_124_jr_8013FFD8.o,tail5.data.o,ov_SC03_124_jr_8015444C.o,tail6.data.o,ov_SC03_124_jr_80154C24.o,tail7.data.o,ov_SC03_124_jr_801588CC.o,tail8.data.o,ov_SC03_124_jr_80159C84.o,tail9.data.o,ov_SC03_124_jr_8015A3C8.o,tail10.data.o,ov_SC03_124_jr_8015AE2C.o,tail11.data.o,ov_SC03_124_jr_8015C32C.o,tail12.data.o,ov_SC03_124_jr_8016AB6C.o,tail13.data.o,ov_SC03_124_jr_801734BC.o,tail14.data.o,ov_SC03_124_jr_80178D40.o,tail15.data.o,ov_SC03_124_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_124/ov_SC03_124_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_124/ov_SC03_124_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_124/ov_SC03_124_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2046,7 +2046,7 @@ ov_SC03_125_ELF := $(ov_SC03_125_OUT).elf ov_SC03_125_MAPFILE := $(ov_SC03_125_OUT).map ov_SC03_125_LD_SCRIPT := $(ov_SC03_125_OUT).ld ov_SC03_125_SPLAT_YAML := config/splat.ov_SC03_125.yaml -ov_SC03_125_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_125_jr_8012ACE0.o,tail2.data.o,ov_SC03_125_jr_801380E0.o,tail3.data.o,ov_SC03_125_jr_8013F350.o,tail4.data.o,ov_SC03_125_jr_8013FFD8.o,tail5.data.o,ov_SC03_125_jr_8015444C.o,tail6.data.o,ov_SC03_125_jr_80154C24.o,tail7.data.o,ov_SC03_125_jr_80159C84.o,tail8.data.o,ov_SC03_125_jr_8015A3C8.o,tail9.data.o,ov_SC03_125_jr_8015AE2C.o,tail10.data.o,ov_SC03_125_jr_8015C32C.o,tail11.data.o,ov_SC03_125_jr_8016AB6C.o,tail12.data.o,ov_SC03_125_jr_801734BC.o,tail13.data.o,ov_SC03_125_jr_80178D40.o,tail14.data.o,ov_SC03_125_jr_8017A4AC.o,tail15.data.o,ov_SC03_125_jr_8017D604.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_125_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_125_jr_8012ACE0.o,tail2.data.o,ov_SC03_125_jr_801380E0.o,tail3.data.o,ov_SC03_125_jr_8013F350.o,tail4.data.o,ov_SC03_125_jr_8013FFD8.o,tail5.data.o,ov_SC03_125_jr_8015444C.o,tail6.data.o,ov_SC03_125_jr_80154C24.o,tail7.data.o,ov_SC03_125_jr_801588CC.o,tail8.data.o,ov_SC03_125_jr_80159C84.o,tail9.data.o,ov_SC03_125_jr_8015A3C8.o,tail10.data.o,ov_SC03_125_jr_8015AE2C.o,tail11.data.o,ov_SC03_125_jr_8015C32C.o,tail12.data.o,ov_SC03_125_jr_8016AB6C.o,tail13.data.o,ov_SC03_125_jr_801734BC.o,tail14.data.o,ov_SC03_125_jr_80178D40.o,tail15.data.o,ov_SC03_125_jr_8017A4AC.o,tail16.data.o,ov_SC03_125_jr_8017D604.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_125/ov_SC03_125_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_125/ov_SC03_125_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_125/ov_SC03_125_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2071,7 +2071,7 @@ ov_SC03_126_ELF := $(ov_SC03_126_OUT).elf ov_SC03_126_MAPFILE := $(ov_SC03_126_OUT).map ov_SC03_126_LD_SCRIPT := $(ov_SC03_126_OUT).ld ov_SC03_126_SPLAT_YAML := config/splat.ov_SC03_126.yaml -ov_SC03_126_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_126_jr_8012ACE0.o,tail2.data.o,ov_SC03_126_jr_801380E0.o,tail3.data.o,ov_SC03_126_jr_8013F350.o,tail4.data.o,ov_SC03_126_jr_8013FFD8.o,tail5.data.o,ov_SC03_126_jr_8015444C.o,tail6.data.o,ov_SC03_126_jr_80154C24.o,tail7.data.o,ov_SC03_126_jr_80159C84.o,tail8.data.o,ov_SC03_126_jr_8015A3C8.o,tail9.data.o,ov_SC03_126_jr_8015AE2C.o,tail10.data.o,ov_SC03_126_jr_8015C32C.o,tail11.data.o,ov_SC03_126_jr_8016AB6C.o,tail12.data.o,ov_SC03_126_jr_801734BC.o,tail13.data.o,ov_SC03_126_jr_80178D40.o,tail14.data.o,ov_SC03_126_jr_8017A4AC.o,tail15.data.o,ov_SC03_126_jr_8017D5C0.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_126_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_126_jr_8012ACE0.o,tail2.data.o,ov_SC03_126_jr_801380E0.o,tail3.data.o,ov_SC03_126_jr_8013F350.o,tail4.data.o,ov_SC03_126_jr_8013FFD8.o,tail5.data.o,ov_SC03_126_jr_8015444C.o,tail6.data.o,ov_SC03_126_jr_80154C24.o,tail7.data.o,ov_SC03_126_jr_801588CC.o,tail8.data.o,ov_SC03_126_jr_80159C84.o,tail9.data.o,ov_SC03_126_jr_8015A3C8.o,tail10.data.o,ov_SC03_126_jr_8015AE2C.o,tail11.data.o,ov_SC03_126_jr_8015C32C.o,tail12.data.o,ov_SC03_126_jr_8016AB6C.o,tail13.data.o,ov_SC03_126_jr_801734BC.o,tail14.data.o,ov_SC03_126_jr_80178D40.o,tail15.data.o,ov_SC03_126_jr_8017A4AC.o,tail16.data.o,ov_SC03_126_jr_8017D5C0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_126/ov_SC03_126_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC03_126/ov_SC03_126_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_126/ov_SC03_126_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2096,7 +2096,7 @@ ov_SC04_002_ELF := $(ov_SC04_002_OUT).elf ov_SC04_002_MAPFILE := $(ov_SC04_002_OUT).map ov_SC04_002_LD_SCRIPT := $(ov_SC04_002_OUT).ld ov_SC04_002_SPLAT_YAML := config/splat.ov_SC04_002.yaml -ov_SC04_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_002_jr_8012ACE0.o,tail2.data.o,ov_SC04_002_jr_801380E0.o,tail3.data.o,ov_SC04_002_jr_8013F350.o,tail4.data.o,ov_SC04_002_jr_8013FFD8.o,tail5.data.o,ov_SC04_002_jr_8015444C.o,tail6.data.o,ov_SC04_002_jr_80154C24.o,tail7.data.o,ov_SC04_002_jr_80159C84.o,tail8.data.o,ov_SC04_002_jr_8015A3C8.o,tail9.data.o,ov_SC04_002_jr_8015AE2C.o,tail10.data.o,ov_SC04_002_jr_8015C32C.o,tail11.data.o,ov_SC04_002_jr_8016AB6C.o,tail12.data.o,ov_SC04_002_jr_801734BC.o,tail13.data.o,ov_SC04_002_jr_80178D40.o,tail14.data.o,ov_SC04_002_jr_8017A4AC.o,tail15.data.o,ov_SC04_002_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_002_jr_8012ACE0.o,tail2.data.o,ov_SC04_002_jr_801380E0.o,tail3.data.o,ov_SC04_002_jr_8013F350.o,tail4.data.o,ov_SC04_002_jr_8013FFD8.o,tail5.data.o,ov_SC04_002_jr_8015444C.o,tail6.data.o,ov_SC04_002_jr_80154C24.o,tail7.data.o,ov_SC04_002_jr_801588CC.o,tail8.data.o,ov_SC04_002_jr_80159C84.o,tail9.data.o,ov_SC04_002_jr_8015A3C8.o,tail10.data.o,ov_SC04_002_jr_8015AE2C.o,tail11.data.o,ov_SC04_002_jr_8015C32C.o,tail12.data.o,ov_SC04_002_jr_8016AB6C.o,tail13.data.o,ov_SC04_002_jr_801734BC.o,tail14.data.o,ov_SC04_002_jr_80178D40.o,tail15.data.o,ov_SC04_002_jr_8017A4AC.o,tail16.data.o,ov_SC04_002_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_002/ov_SC04_002_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_002/ov_SC04_002_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_002/ov_SC04_002_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2121,7 +2121,7 @@ ov_SC04_003_ELF := $(ov_SC04_003_OUT).elf ov_SC04_003_MAPFILE := $(ov_SC04_003_OUT).map ov_SC04_003_LD_SCRIPT := $(ov_SC04_003_OUT).ld ov_SC04_003_SPLAT_YAML := config/splat.ov_SC04_003.yaml -ov_SC04_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_003_jr_8012ACE0.o,tail2.data.o,ov_SC04_003_jr_801380E0.o,tail3.data.o,ov_SC04_003_jr_8013F350.o,tail4.data.o,ov_SC04_003_jr_8013FFD8.o,tail5.data.o,ov_SC04_003_jr_8015444C.o,tail6.data.o,ov_SC04_003_jr_80154C24.o,tail7.data.o,ov_SC04_003_jr_80159C84.o,tail8.data.o,ov_SC04_003_jr_8015A3C8.o,tail9.data.o,ov_SC04_003_jr_8015AE2C.o,tail10.data.o,ov_SC04_003_jr_8015C32C.o,tail11.data.o,ov_SC04_003_jr_8016AB6C.o,tail12.data.o,ov_SC04_003_jr_801734BC.o,tail13.data.o,ov_SC04_003_jr_80178D40.o,tail14.data.o,ov_SC04_003_jr_8017A4AC.o,tail15.data.o,ov_SC04_003_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_003_jr_8012ACE0.o,tail2.data.o,ov_SC04_003_jr_801380E0.o,tail3.data.o,ov_SC04_003_jr_8013F350.o,tail4.data.o,ov_SC04_003_jr_8013FFD8.o,tail5.data.o,ov_SC04_003_jr_8015444C.o,tail6.data.o,ov_SC04_003_jr_80154C24.o,tail7.data.o,ov_SC04_003_jr_801588CC.o,tail8.data.o,ov_SC04_003_jr_80159C84.o,tail9.data.o,ov_SC04_003_jr_8015A3C8.o,tail10.data.o,ov_SC04_003_jr_8015AE2C.o,tail11.data.o,ov_SC04_003_jr_8015C32C.o,tail12.data.o,ov_SC04_003_jr_8016AB6C.o,tail13.data.o,ov_SC04_003_jr_801734BC.o,tail14.data.o,ov_SC04_003_jr_80178D40.o,tail15.data.o,ov_SC04_003_jr_8017A4AC.o,tail16.data.o,ov_SC04_003_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_003/ov_SC04_003_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_003/ov_SC04_003_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_003/ov_SC04_003_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2146,7 +2146,7 @@ ov_SC04_004_ELF := $(ov_SC04_004_OUT).elf ov_SC04_004_MAPFILE := $(ov_SC04_004_OUT).map ov_SC04_004_LD_SCRIPT := $(ov_SC04_004_OUT).ld ov_SC04_004_SPLAT_YAML := config/splat.ov_SC04_004.yaml -ov_SC04_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_004_jr_8012ACE0.o,tail2.data.o,ov_SC04_004_jr_801380E0.o,tail3.data.o,ov_SC04_004_jr_8013F350.o,tail4.data.o,ov_SC04_004_jr_8013FFD8.o,tail5.data.o,ov_SC04_004_jr_8015444C.o,tail6.data.o,ov_SC04_004_jr_80154C24.o,tail7.data.o,ov_SC04_004_jr_80159C84.o,tail8.data.o,ov_SC04_004_jr_8015A3C8.o,tail9.data.o,ov_SC04_004_jr_8015AE2C.o,tail10.data.o,ov_SC04_004_jr_8015C32C.o,tail11.data.o,ov_SC04_004_jr_8016AB6C.o,tail12.data.o,ov_SC04_004_jr_801734BC.o,tail13.data.o,ov_SC04_004_jr_80178D40.o,tail14.data.o,ov_SC04_004_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_004_jr_8012ACE0.o,tail2.data.o,ov_SC04_004_jr_801380E0.o,tail3.data.o,ov_SC04_004_jr_8013F350.o,tail4.data.o,ov_SC04_004_jr_8013FFD8.o,tail5.data.o,ov_SC04_004_jr_8015444C.o,tail6.data.o,ov_SC04_004_jr_80154C24.o,tail7.data.o,ov_SC04_004_jr_801588CC.o,tail8.data.o,ov_SC04_004_jr_80159C84.o,tail9.data.o,ov_SC04_004_jr_8015A3C8.o,tail10.data.o,ov_SC04_004_jr_8015AE2C.o,tail11.data.o,ov_SC04_004_jr_8015C32C.o,tail12.data.o,ov_SC04_004_jr_8016AB6C.o,tail13.data.o,ov_SC04_004_jr_801734BC.o,tail14.data.o,ov_SC04_004_jr_80178D40.o,tail15.data.o,ov_SC04_004_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_004/ov_SC04_004_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_004/ov_SC04_004_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_004/ov_SC04_004_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2171,7 +2171,7 @@ ov_SC04_005_ELF := $(ov_SC04_005_OUT).elf ov_SC04_005_MAPFILE := $(ov_SC04_005_OUT).map ov_SC04_005_LD_SCRIPT := $(ov_SC04_005_OUT).ld ov_SC04_005_SPLAT_YAML := config/splat.ov_SC04_005.yaml -ov_SC04_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_005_jr_8012ACE0.o,tail2.data.o,ov_SC04_005_jr_801380E0.o,tail3.data.o,ov_SC04_005_jr_8013F350.o,tail4.data.o,ov_SC04_005_jr_8013FFD8.o,tail5.data.o,ov_SC04_005_jr_8015444C.o,tail6.data.o,ov_SC04_005_jr_80154C24.o,tail7.data.o,ov_SC04_005_jr_80159C84.o,tail8.data.o,ov_SC04_005_jr_8015A3C8.o,tail9.data.o,ov_SC04_005_jr_8015AE2C.o,tail10.data.o,ov_SC04_005_jr_8015C32C.o,tail11.data.o,ov_SC04_005_jr_8016AB6C.o,tail12.data.o,ov_SC04_005_jr_801734BC.o,tail13.data.o,ov_SC04_005_jr_80178D40.o,tail14.data.o,ov_SC04_005_jr_8017A4AC.o,tail15.data.o,ov_SC04_005_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_005_jr_8012ACE0.o,tail2.data.o,ov_SC04_005_jr_801380E0.o,tail3.data.o,ov_SC04_005_jr_8013F350.o,tail4.data.o,ov_SC04_005_jr_8013FFD8.o,tail5.data.o,ov_SC04_005_jr_8015444C.o,tail6.data.o,ov_SC04_005_jr_80154C24.o,tail7.data.o,ov_SC04_005_jr_801588CC.o,tail8.data.o,ov_SC04_005_jr_80159C84.o,tail9.data.o,ov_SC04_005_jr_8015A3C8.o,tail10.data.o,ov_SC04_005_jr_8015AE2C.o,tail11.data.o,ov_SC04_005_jr_8015C32C.o,tail12.data.o,ov_SC04_005_jr_8016AB6C.o,tail13.data.o,ov_SC04_005_jr_801734BC.o,tail14.data.o,ov_SC04_005_jr_80178D40.o,tail15.data.o,ov_SC04_005_jr_8017A4AC.o,tail16.data.o,ov_SC04_005_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_005/ov_SC04_005_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_005/ov_SC04_005_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_005/ov_SC04_005_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2196,7 +2196,7 @@ ov_SC04_006_ELF := $(ov_SC04_006_OUT).elf ov_SC04_006_MAPFILE := $(ov_SC04_006_OUT).map ov_SC04_006_LD_SCRIPT := $(ov_SC04_006_OUT).ld ov_SC04_006_SPLAT_YAML := config/splat.ov_SC04_006.yaml -ov_SC04_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_006_jr_8012ACE0.o,tail2.data.o,ov_SC04_006_jr_801380E0.o,tail3.data.o,ov_SC04_006_jr_8013F350.o,tail4.data.o,ov_SC04_006_jr_8013FFD8.o,tail5.data.o,ov_SC04_006_jr_8015444C.o,tail6.data.o,ov_SC04_006_jr_80154C24.o,tail7.data.o,ov_SC04_006_jr_80159C84.o,tail8.data.o,ov_SC04_006_jr_8015A3C8.o,tail9.data.o,ov_SC04_006_jr_8015AE2C.o,tail10.data.o,ov_SC04_006_jr_8015C32C.o,tail11.data.o,ov_SC04_006_jr_8016AB6C.o,tail12.data.o,ov_SC04_006_jr_801734BC.o,tail13.data.o,ov_SC04_006_jr_80178D40.o,tail14.data.o,ov_SC04_006_jr_8017A4AC.o,tail15.data.o,ov_SC04_006_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_006_jr_8012ACE0.o,tail2.data.o,ov_SC04_006_jr_801380E0.o,tail3.data.o,ov_SC04_006_jr_8013F350.o,tail4.data.o,ov_SC04_006_jr_8013FFD8.o,tail5.data.o,ov_SC04_006_jr_8015444C.o,tail6.data.o,ov_SC04_006_jr_80154C24.o,tail7.data.o,ov_SC04_006_jr_801588CC.o,tail8.data.o,ov_SC04_006_jr_80159C84.o,tail9.data.o,ov_SC04_006_jr_8015A3C8.o,tail10.data.o,ov_SC04_006_jr_8015AE2C.o,tail11.data.o,ov_SC04_006_jr_8015C32C.o,tail12.data.o,ov_SC04_006_jr_8016AB6C.o,tail13.data.o,ov_SC04_006_jr_801734BC.o,tail14.data.o,ov_SC04_006_jr_80178D40.o,tail15.data.o,ov_SC04_006_jr_8017A4AC.o,tail16.data.o,ov_SC04_006_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_006/ov_SC04_006_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_006/ov_SC04_006_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_006/ov_SC04_006_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2221,7 +2221,7 @@ ov_SC04_007_ELF := $(ov_SC04_007_OUT).elf ov_SC04_007_MAPFILE := $(ov_SC04_007_OUT).map ov_SC04_007_LD_SCRIPT := $(ov_SC04_007_OUT).ld ov_SC04_007_SPLAT_YAML := config/splat.ov_SC04_007.yaml -ov_SC04_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_007_jr_8012ACE0.o,tail2.data.o,ov_SC04_007_jr_801380E0.o,tail3.data.o,ov_SC04_007_jr_8013F350.o,tail4.data.o,ov_SC04_007_jr_8013FFD8.o,tail5.data.o,ov_SC04_007_jr_8015444C.o,tail6.data.o,ov_SC04_007_jr_80154C24.o,tail7.data.o,ov_SC04_007_jr_80159C84.o,tail8.data.o,ov_SC04_007_jr_8015A3C8.o,tail9.data.o,ov_SC04_007_jr_8015AE2C.o,tail10.data.o,ov_SC04_007_jr_8015C32C.o,tail11.data.o,ov_SC04_007_jr_8016AB6C.o,tail12.data.o,ov_SC04_007_jr_801734BC.o,tail13.data.o,ov_SC04_007_jr_80178D40.o,tail14.data.o,ov_SC04_007_jr_8017A4AC.o,tail15.data.o,ov_SC04_007_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_007_jr_8012ACE0.o,tail2.data.o,ov_SC04_007_jr_801380E0.o,tail3.data.o,ov_SC04_007_jr_8013F350.o,tail4.data.o,ov_SC04_007_jr_8013FFD8.o,tail5.data.o,ov_SC04_007_jr_8015444C.o,tail6.data.o,ov_SC04_007_jr_80154C24.o,tail7.data.o,ov_SC04_007_jr_801588CC.o,tail8.data.o,ov_SC04_007_jr_80159C84.o,tail9.data.o,ov_SC04_007_jr_8015A3C8.o,tail10.data.o,ov_SC04_007_jr_8015AE2C.o,tail11.data.o,ov_SC04_007_jr_8015C32C.o,tail12.data.o,ov_SC04_007_jr_8016AB6C.o,tail13.data.o,ov_SC04_007_jr_801734BC.o,tail14.data.o,ov_SC04_007_jr_80178D40.o,tail15.data.o,ov_SC04_007_jr_8017A4AC.o,tail16.data.o,ov_SC04_007_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_007/ov_SC04_007_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_007/ov_SC04_007_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_007/ov_SC04_007_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2246,7 +2246,7 @@ ov_SC04_008_ELF := $(ov_SC04_008_OUT).elf ov_SC04_008_MAPFILE := $(ov_SC04_008_OUT).map ov_SC04_008_LD_SCRIPT := $(ov_SC04_008_OUT).ld ov_SC04_008_SPLAT_YAML := config/splat.ov_SC04_008.yaml -ov_SC04_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_008_jr_8012ACE0.o,tail2.data.o,ov_SC04_008_jr_801380E0.o,tail3.data.o,ov_SC04_008_jr_8013F350.o,tail4.data.o,ov_SC04_008_jr_8013FFD8.o,tail5.data.o,ov_SC04_008_jr_8015444C.o,tail6.data.o,ov_SC04_008_jr_80154C24.o,tail7.data.o,ov_SC04_008_jr_80159C84.o,tail8.data.o,ov_SC04_008_jr_8015AE2C.o,tail9.data.o,ov_SC04_008_jr_8015C32C.o,tail10.data.o,ov_SC04_008_jr_8016AB6C.o,tail11.data.o,ov_SC04_008_jr_801734BC.o,tail12.data.o,ov_SC04_008_jr_80178D40.o,tail13.data.o,ov_SC04_008_jr_8017A4AC.o,tail14.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_008_jr_8012ACE0.o,tail2.data.o,ov_SC04_008_jr_801380E0.o,tail3.data.o,ov_SC04_008_jr_8013F350.o,tail4.data.o,ov_SC04_008_jr_8013FFD8.o,tail5.data.o,ov_SC04_008_jr_8015444C.o,tail6.data.o,ov_SC04_008_jr_80154C24.o,tail7.data.o,ov_SC04_008_jr_801588CC.o,tail8.data.o,ov_SC04_008_jr_80159C84.o,tail9.data.o,ov_SC04_008_jr_8015AE2C.o,tail10.data.o,ov_SC04_008_jr_8015C32C.o,tail11.data.o,ov_SC04_008_jr_8016AB6C.o,tail12.data.o,ov_SC04_008_jr_801734BC.o,tail13.data.o,ov_SC04_008_jr_80178D40.o,tail14.data.o,ov_SC04_008_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_008/ov_SC04_008_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_008/ov_SC04_008_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_008/ov_SC04_008_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2271,7 +2271,7 @@ ov_SC04_009_ELF := $(ov_SC04_009_OUT).elf ov_SC04_009_MAPFILE := $(ov_SC04_009_OUT).map ov_SC04_009_LD_SCRIPT := $(ov_SC04_009_OUT).ld ov_SC04_009_SPLAT_YAML := config/splat.ov_SC04_009.yaml -ov_SC04_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_009_jr_8012ACE0.o,tail2.data.o,ov_SC04_009_jr_801380E0.o,tail3.data.o,ov_SC04_009_jr_8013F350.o,tail4.data.o,ov_SC04_009_jr_8013FFD8.o,tail5.data.o,ov_SC04_009_jr_8015444C.o,tail6.data.o,ov_SC04_009_jr_80154C24.o,tail7.data.o,ov_SC04_009_jr_80159C84.o,tail8.data.o,ov_SC04_009_jr_8015A3C8.o,tail9.data.o,ov_SC04_009_jr_8015AE2C.o,tail10.data.o,ov_SC04_009_jr_8015C32C.o,tail11.data.o,ov_SC04_009_jr_8016AB6C.o,tail12.data.o,ov_SC04_009_jr_801734BC.o,tail13.data.o,ov_SC04_009_jr_80178D40.o,tail14.data.o,ov_SC04_009_jr_8017A4AC.o,tail15.data.o,ov_SC04_009_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_009_jr_8012ACE0.o,tail2.data.o,ov_SC04_009_jr_801380E0.o,tail3.data.o,ov_SC04_009_jr_8013F350.o,tail4.data.o,ov_SC04_009_jr_8013FFD8.o,tail5.data.o,ov_SC04_009_jr_8015444C.o,tail6.data.o,ov_SC04_009_jr_80154C24.o,tail7.data.o,ov_SC04_009_jr_801588CC.o,tail8.data.o,ov_SC04_009_jr_80159C84.o,tail9.data.o,ov_SC04_009_jr_8015A3C8.o,tail10.data.o,ov_SC04_009_jr_8015AE2C.o,tail11.data.o,ov_SC04_009_jr_8015C32C.o,tail12.data.o,ov_SC04_009_jr_8016AB6C.o,tail13.data.o,ov_SC04_009_jr_801734BC.o,tail14.data.o,ov_SC04_009_jr_80178D40.o,tail15.data.o,ov_SC04_009_jr_8017A4AC.o,tail16.data.o,ov_SC04_009_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_009/ov_SC04_009_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_009/ov_SC04_009_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_009/ov_SC04_009_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2296,7 +2296,7 @@ ov_SC04_010_ELF := $(ov_SC04_010_OUT).elf ov_SC04_010_MAPFILE := $(ov_SC04_010_OUT).map ov_SC04_010_LD_SCRIPT := $(ov_SC04_010_OUT).ld ov_SC04_010_SPLAT_YAML := config/splat.ov_SC04_010.yaml -ov_SC04_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_010_jr_8012ACE0.o,tail2.data.o,ov_SC04_010_jr_801380E0.o,tail3.data.o,ov_SC04_010_jr_8013F350.o,tail4.data.o,ov_SC04_010_jr_8013FFD8.o,tail5.data.o,ov_SC04_010_jr_8015444C.o,tail6.data.o,ov_SC04_010_jr_80154C24.o,tail7.data.o,ov_SC04_010_jr_80159C84.o,tail8.data.o,ov_SC04_010_jr_8015A3C8.o,tail9.data.o,ov_SC04_010_jr_8015AE2C.o,tail10.data.o,ov_SC04_010_jr_8015C32C.o,tail11.data.o,ov_SC04_010_jr_8016AB6C.o,tail12.data.o,ov_SC04_010_jr_801734BC.o,tail13.data.o,ov_SC04_010_jr_80178D40.o,tail14.data.o,ov_SC04_010_jr_8017A4AC.o,tail15.data.o,ov_SC04_010_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_010_jr_8012ACE0.o,tail2.data.o,ov_SC04_010_jr_801380E0.o,tail3.data.o,ov_SC04_010_jr_8013F350.o,tail4.data.o,ov_SC04_010_jr_8013FFD8.o,tail5.data.o,ov_SC04_010_jr_8015444C.o,tail6.data.o,ov_SC04_010_jr_80154C24.o,tail7.data.o,ov_SC04_010_jr_801588CC.o,tail8.data.o,ov_SC04_010_jr_80159C84.o,tail9.data.o,ov_SC04_010_jr_8015A3C8.o,tail10.data.o,ov_SC04_010_jr_8015AE2C.o,tail11.data.o,ov_SC04_010_jr_8015C32C.o,tail12.data.o,ov_SC04_010_jr_8016AB6C.o,tail13.data.o,ov_SC04_010_jr_801734BC.o,tail14.data.o,ov_SC04_010_jr_80178D40.o,tail15.data.o,ov_SC04_010_jr_8017A4AC.o,tail16.data.o,ov_SC04_010_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_010/ov_SC04_010_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_010/ov_SC04_010_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_010/ov_SC04_010_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2321,7 +2321,7 @@ ov_SC04_011_ELF := $(ov_SC04_011_OUT).elf ov_SC04_011_MAPFILE := $(ov_SC04_011_OUT).map ov_SC04_011_LD_SCRIPT := $(ov_SC04_011_OUT).ld ov_SC04_011_SPLAT_YAML := config/splat.ov_SC04_011.yaml -ov_SC04_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_011_jr_8012ACE0.o,tail2.data.o,ov_SC04_011_jr_801380E0.o,tail3.data.o,ov_SC04_011_jr_8013F350.o,tail4.data.o,ov_SC04_011_jr_8013FFD8.o,tail5.data.o,ov_SC04_011_jr_8015444C.o,tail6.data.o,ov_SC04_011_jr_80154C24.o,tail7.data.o,ov_SC04_011_jr_80159C84.o,tail8.data.o,ov_SC04_011_jr_8015A3C8.o,tail9.data.o,ov_SC04_011_jr_8015AE2C.o,tail10.data.o,ov_SC04_011_jr_8015C32C.o,tail11.data.o,ov_SC04_011_jr_8016AB6C.o,tail12.data.o,ov_SC04_011_jr_801734BC.o,tail13.data.o,ov_SC04_011_jr_80178D40.o,tail14.data.o,ov_SC04_011_jr_8017A4AC.o,tail15.data.o,ov_SC04_011_jr_8017D494.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_011_jr_8012ACE0.o,tail2.data.o,ov_SC04_011_jr_801380E0.o,tail3.data.o,ov_SC04_011_jr_8013F350.o,tail4.data.o,ov_SC04_011_jr_8013FFD8.o,tail5.data.o,ov_SC04_011_jr_8015444C.o,tail6.data.o,ov_SC04_011_jr_80154C24.o,tail7.data.o,ov_SC04_011_jr_801588CC.o,tail8.data.o,ov_SC04_011_jr_80159C84.o,tail9.data.o,ov_SC04_011_jr_8015A3C8.o,tail10.data.o,ov_SC04_011_jr_8015AE2C.o,tail11.data.o,ov_SC04_011_jr_8015C32C.o,tail12.data.o,ov_SC04_011_jr_8016AB6C.o,tail13.data.o,ov_SC04_011_jr_801734BC.o,tail14.data.o,ov_SC04_011_jr_80178D40.o,tail15.data.o,ov_SC04_011_jr_8017A4AC.o,tail16.data.o,ov_SC04_011_jr_8017D494.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2346,7 +2346,7 @@ ov_SC04_012_ELF := $(ov_SC04_012_OUT).elf ov_SC04_012_MAPFILE := $(ov_SC04_012_OUT).map ov_SC04_012_LD_SCRIPT := $(ov_SC04_012_OUT).ld ov_SC04_012_SPLAT_YAML := config/splat.ov_SC04_012.yaml -ov_SC04_012_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_012_jr_8012ACE0.o,tail2.data.o,ov_SC04_012_jr_801380E0.o,tail3.data.o,ov_SC04_012_jr_8013F350.o,tail4.data.o,ov_SC04_012_jr_8013FFD8.o,tail5.data.o,ov_SC04_012_jr_8015444C.o,tail6.data.o,ov_SC04_012_jr_80154C24.o,tail7.data.o,ov_SC04_012_jr_80159C84.o,tail8.data.o,ov_SC04_012_jr_8015A3C8.o,tail9.data.o,ov_SC04_012_jr_8015AE2C.o,tail10.data.o,ov_SC04_012_jr_8015C32C.o,tail11.data.o,ov_SC04_012_jr_8016AB6C.o,tail12.data.o,ov_SC04_012_jr_801734BC.o,tail13.data.o,ov_SC04_012_jr_80178D40.o,tail14.data.o,ov_SC04_012_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_012_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_012_jr_8012ACE0.o,tail2.data.o,ov_SC04_012_jr_801380E0.o,tail3.data.o,ov_SC04_012_jr_8013F350.o,tail4.data.o,ov_SC04_012_jr_8013FFD8.o,tail5.data.o,ov_SC04_012_jr_8015444C.o,tail6.data.o,ov_SC04_012_jr_80154C24.o,tail7.data.o,ov_SC04_012_jr_801588CC.o,tail8.data.o,ov_SC04_012_jr_80159C84.o,tail9.data.o,ov_SC04_012_jr_8015A3C8.o,tail10.data.o,ov_SC04_012_jr_8015AE2C.o,tail11.data.o,ov_SC04_012_jr_8015C32C.o,tail12.data.o,ov_SC04_012_jr_8016AB6C.o,tail13.data.o,ov_SC04_012_jr_801734BC.o,tail14.data.o,ov_SC04_012_jr_80178D40.o,tail15.data.o,ov_SC04_012_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_012/ov_SC04_012_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_012/ov_SC04_012_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_012/ov_SC04_012_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2371,7 +2371,7 @@ ov_SC04_015_ELF := $(ov_SC04_015_OUT).elf ov_SC04_015_MAPFILE := $(ov_SC04_015_OUT).map ov_SC04_015_LD_SCRIPT := $(ov_SC04_015_OUT).ld ov_SC04_015_SPLAT_YAML := config/splat.ov_SC04_015.yaml -ov_SC04_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_015_jr_8012ACE0.o,tail2.data.o,ov_SC04_015_jr_801380E0.o,tail3.data.o,ov_SC04_015_jr_8013F350.o,tail4.data.o,ov_SC04_015_jr_8013FFD8.o,tail5.data.o,ov_SC04_015_jr_8015444C.o,tail6.data.o,ov_SC04_015_jr_80154C24.o,tail7.data.o,ov_SC04_015_jr_80159C84.o,tail8.data.o,ov_SC04_015_jr_8015A3C8.o,tail9.data.o,ov_SC04_015_jr_8015AE2C.o,tail10.data.o,ov_SC04_015_jr_8015C32C.o,tail11.data.o,ov_SC04_015_jr_8016AB6C.o,tail12.data.o,ov_SC04_015_jr_801734BC.o,tail13.data.o,ov_SC04_015_jr_80178D40.o,tail14.data.o,ov_SC04_015_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_015_jr_8012ACE0.o,tail2.data.o,ov_SC04_015_jr_801380E0.o,tail3.data.o,ov_SC04_015_jr_8013F350.o,tail4.data.o,ov_SC04_015_jr_8013FFD8.o,tail5.data.o,ov_SC04_015_jr_8015444C.o,tail6.data.o,ov_SC04_015_jr_80154C24.o,tail7.data.o,ov_SC04_015_jr_801588CC.o,tail8.data.o,ov_SC04_015_jr_80159C84.o,tail9.data.o,ov_SC04_015_jr_8015A3C8.o,tail10.data.o,ov_SC04_015_jr_8015AE2C.o,tail11.data.o,ov_SC04_015_jr_8015C32C.o,tail12.data.o,ov_SC04_015_jr_8016AB6C.o,tail13.data.o,ov_SC04_015_jr_801734BC.o,tail14.data.o,ov_SC04_015_jr_80178D40.o,tail15.data.o,ov_SC04_015_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_015/ov_SC04_015_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_015/ov_SC04_015_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_015/ov_SC04_015_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2396,7 +2396,7 @@ ov_SC04_016_ELF := $(ov_SC04_016_OUT).elf ov_SC04_016_MAPFILE := $(ov_SC04_016_OUT).map ov_SC04_016_LD_SCRIPT := $(ov_SC04_016_OUT).ld ov_SC04_016_SPLAT_YAML := config/splat.ov_SC04_016.yaml -ov_SC04_016_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_016_jr_8012ACE0.o,tail2.data.o,ov_SC04_016_jr_801380E0.o,tail3.data.o,ov_SC04_016_jr_8013F350.o,tail4.data.o,ov_SC04_016_jr_8013FFD8.o,tail5.data.o,ov_SC04_016_jr_8015444C.o,tail6.data.o,ov_SC04_016_jr_80154C24.o,tail7.data.o,ov_SC04_016_jr_80159C84.o,tail8.data.o,ov_SC04_016_jr_8015A3C8.o,tail9.data.o,ov_SC04_016_jr_8015AE2C.o,tail10.data.o,ov_SC04_016_jr_8015C32C.o,tail11.data.o,ov_SC04_016_jr_8016AB6C.o,tail12.data.o,ov_SC04_016_jr_801734BC.o,tail13.data.o,ov_SC04_016_jr_80178D40.o,tail14.data.o,ov_SC04_016_jr_8017A4AC.o,tail15.data.o,ov_SC04_016_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_016_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_016_jr_8012ACE0.o,tail2.data.o,ov_SC04_016_jr_801380E0.o,tail3.data.o,ov_SC04_016_jr_8013F350.o,tail4.data.o,ov_SC04_016_jr_8013FFD8.o,tail5.data.o,ov_SC04_016_jr_8015444C.o,tail6.data.o,ov_SC04_016_jr_80154C24.o,tail7.data.o,ov_SC04_016_jr_801588CC.o,tail8.data.o,ov_SC04_016_jr_80159C84.o,tail9.data.o,ov_SC04_016_jr_8015A3C8.o,tail10.data.o,ov_SC04_016_jr_8015AE2C.o,tail11.data.o,ov_SC04_016_jr_8015C32C.o,tail12.data.o,ov_SC04_016_jr_8016AB6C.o,tail13.data.o,ov_SC04_016_jr_801734BC.o,tail14.data.o,ov_SC04_016_jr_80178D40.o,tail15.data.o,ov_SC04_016_jr_8017A4AC.o,tail16.data.o,ov_SC04_016_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_016/ov_SC04_016_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_016/ov_SC04_016_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_016/ov_SC04_016_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2421,7 +2421,7 @@ ov_SC04_020_ELF := $(ov_SC04_020_OUT).elf ov_SC04_020_MAPFILE := $(ov_SC04_020_OUT).map ov_SC04_020_LD_SCRIPT := $(ov_SC04_020_OUT).ld ov_SC04_020_SPLAT_YAML := config/splat.ov_SC04_020.yaml -ov_SC04_020_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_020_jr_8012ACE0.o,tail2.data.o,ov_SC04_020_jr_801380E0.o,tail3.data.o,ov_SC04_020_jr_8013F350.o,tail4.data.o,ov_SC04_020_jr_8013FFD8.o,tail5.data.o,ov_SC04_020_jr_8015444C.o,tail6.data.o,ov_SC04_020_jr_80154C24.o,tail7.data.o,ov_SC04_020_jr_80159C84.o,tail8.data.o,ov_SC04_020_jr_8015A3C8.o,tail9.data.o,ov_SC04_020_jr_8015AE2C.o,tail10.data.o,ov_SC04_020_jr_8015C32C.o,tail11.data.o,ov_SC04_020_jr_8016AB6C.o,tail12.data.o,ov_SC04_020_jr_801734BC.o,tail13.data.o,ov_SC04_020_jr_80178D40.o,tail14.data.o,ov_SC04_020_jr_8017A4AC.o,tail15.data.o,ov_SC04_020_jr_8017D604.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_020_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_020_jr_8012ACE0.o,tail2.data.o,ov_SC04_020_jr_801380E0.o,tail3.data.o,ov_SC04_020_jr_8013F350.o,tail4.data.o,ov_SC04_020_jr_8013FFD8.o,tail5.data.o,ov_SC04_020_jr_8015444C.o,tail6.data.o,ov_SC04_020_jr_80154C24.o,tail7.data.o,ov_SC04_020_jr_801588CC.o,tail8.data.o,ov_SC04_020_jr_80159C84.o,tail9.data.o,ov_SC04_020_jr_8015A3C8.o,tail10.data.o,ov_SC04_020_jr_8015AE2C.o,tail11.data.o,ov_SC04_020_jr_8015C32C.o,tail12.data.o,ov_SC04_020_jr_8016AB6C.o,tail13.data.o,ov_SC04_020_jr_801734BC.o,tail14.data.o,ov_SC04_020_jr_80178D40.o,tail15.data.o,ov_SC04_020_jr_8017A4AC.o,tail16.data.o,ov_SC04_020_jr_8017D604.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_020/ov_SC04_020_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_020/ov_SC04_020_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_020/ov_SC04_020_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2446,7 +2446,7 @@ ov_SC04_021_ELF := $(ov_SC04_021_OUT).elf ov_SC04_021_MAPFILE := $(ov_SC04_021_OUT).map ov_SC04_021_LD_SCRIPT := $(ov_SC04_021_OUT).ld ov_SC04_021_SPLAT_YAML := config/splat.ov_SC04_021.yaml -ov_SC04_021_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_021_jr_8012ACE0.o,tail2.data.o,ov_SC04_021_jr_801380E0.o,tail3.data.o,ov_SC04_021_jr_8013F350.o,tail4.data.o,ov_SC04_021_jr_8013FFD8.o,tail5.data.o,ov_SC04_021_jr_8015444C.o,tail6.data.o,ov_SC04_021_jr_80154C24.o,tail7.data.o,ov_SC04_021_jr_80159C84.o,tail8.data.o,ov_SC04_021_jr_8015A3C8.o,tail9.data.o,ov_SC04_021_jr_8015AE2C.o,tail10.data.o,ov_SC04_021_jr_8015C32C.o,tail11.data.o,ov_SC04_021_jr_8016AB6C.o,tail12.data.o,ov_SC04_021_jr_801734BC.o,tail13.data.o,ov_SC04_021_jr_80178D40.o,tail14.data.o,ov_SC04_021_jr_8017A4AC.o,tail15.data.o,ov_SC04_021_jr_8017D5C0.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC04_021_JTBL_INTERLEAVE := --order tail.data.o,ov_SC04_021_jr_8012ACE0.o,tail2.data.o,ov_SC04_021_jr_801380E0.o,tail3.data.o,ov_SC04_021_jr_8013F350.o,tail4.data.o,ov_SC04_021_jr_8013FFD8.o,tail5.data.o,ov_SC04_021_jr_8015444C.o,tail6.data.o,ov_SC04_021_jr_80154C24.o,tail7.data.o,ov_SC04_021_jr_801588CC.o,tail8.data.o,ov_SC04_021_jr_80159C84.o,tail9.data.o,ov_SC04_021_jr_8015A3C8.o,tail10.data.o,ov_SC04_021_jr_8015AE2C.o,tail11.data.o,ov_SC04_021_jr_8015C32C.o,tail12.data.o,ov_SC04_021_jr_8016AB6C.o,tail13.data.o,ov_SC04_021_jr_801734BC.o,tail14.data.o,ov_SC04_021_jr_80178D40.o,tail15.data.o,ov_SC04_021_jr_8017A4AC.o,tail16.data.o,ov_SC04_021_jr_8017D5C0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC04_021/ov_SC04_021_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC04_021/ov_SC04_021_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC04_021/ov_SC04_021_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2471,7 +2471,7 @@ ov_SC05_001_ELF := $(ov_SC05_001_OUT).elf ov_SC05_001_MAPFILE := $(ov_SC05_001_OUT).map ov_SC05_001_LD_SCRIPT := $(ov_SC05_001_OUT).ld ov_SC05_001_SPLAT_YAML := config/splat.ov_SC05_001.yaml -ov_SC05_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_001_jr_8012ACE0.o,tail2.data.o,ov_SC05_001_jr_801380E0.o,tail3.data.o,ov_SC05_001_jr_8013F350.o,tail4.data.o,ov_SC05_001_jr_8013FFD8.o,tail5.data.o,ov_SC05_001_jr_8015444C.o,tail6.data.o,ov_SC05_001_jr_80154C24.o,tail7.data.o,ov_SC05_001_jr_80159C84.o,tail8.data.o,ov_SC05_001_jr_8015A3C8.o,tail9.data.o,ov_SC05_001_jr_8015AE2C.o,tail10.data.o,ov_SC05_001_jr_8015C32C.o,tail11.data.o,ov_SC05_001_jr_8016AB6C.o,tail12.data.o,ov_SC05_001_jr_801734BC.o,tail13.data.o,ov_SC05_001_jr_80178D40.o,tail14.data.o,ov_SC05_001_jr_8017A4AC.o,tail15.data.o,ov_SC05_001_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_001_jr_8012ACE0.o,tail2.data.o,ov_SC05_001_jr_801380E0.o,tail3.data.o,ov_SC05_001_jr_8013F350.o,tail4.data.o,ov_SC05_001_jr_8013FFD8.o,tail5.data.o,ov_SC05_001_jr_8015444C.o,tail6.data.o,ov_SC05_001_jr_80154C24.o,tail7.data.o,ov_SC05_001_jr_801588CC.o,tail8.data.o,ov_SC05_001_jr_80159C84.o,tail9.data.o,ov_SC05_001_jr_8015A3C8.o,tail10.data.o,ov_SC05_001_jr_8015AE2C.o,tail11.data.o,ov_SC05_001_jr_8015C32C.o,tail12.data.o,ov_SC05_001_jr_8016AB6C.o,tail13.data.o,ov_SC05_001_jr_801734BC.o,tail14.data.o,ov_SC05_001_jr_80178D40.o,tail15.data.o,ov_SC05_001_jr_8017A4AC.o,tail16.data.o,ov_SC05_001_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_001/ov_SC05_001_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_001/ov_SC05_001_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_001/ov_SC05_001_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2496,7 +2496,7 @@ ov_SC05_002_ELF := $(ov_SC05_002_OUT).elf ov_SC05_002_MAPFILE := $(ov_SC05_002_OUT).map ov_SC05_002_LD_SCRIPT := $(ov_SC05_002_OUT).ld ov_SC05_002_SPLAT_YAML := config/splat.ov_SC05_002.yaml -ov_SC05_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_002_jr_8012ACE0.o,tail2.data.o,ov_SC05_002_jr_801380E0.o,tail3.data.o,ov_SC05_002_jr_8013F350.o,tail4.data.o,ov_SC05_002_jr_8013FFD8.o,tail5.data.o,ov_SC05_002_jr_8015444C.o,tail6.data.o,ov_SC05_002_jr_80154C24.o,tail7.data.o,ov_SC05_002_jr_80159C84.o,tail8.data.o,ov_SC05_002_jr_8015A3C8.o,tail9.data.o,ov_SC05_002_jr_8015AE2C.o,tail10.data.o,ov_SC05_002_jr_8015C32C.o,tail11.data.o,ov_SC05_002_jr_8016AB6C.o,tail12.data.o,ov_SC05_002_jr_801734BC.o,tail13.data.o,ov_SC05_002_jr_80178D40.o,tail14.data.o,ov_SC05_002_jr_8017A4AC.o,tail15.data.o,ov_SC05_002_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_002_jr_8012ACE0.o,tail2.data.o,ov_SC05_002_jr_801380E0.o,tail3.data.o,ov_SC05_002_jr_8013F350.o,tail4.data.o,ov_SC05_002_jr_8013FFD8.o,tail5.data.o,ov_SC05_002_jr_8015444C.o,tail6.data.o,ov_SC05_002_jr_80154C24.o,tail7.data.o,ov_SC05_002_jr_801588CC.o,tail8.data.o,ov_SC05_002_jr_80159C84.o,tail9.data.o,ov_SC05_002_jr_8015A3C8.o,tail10.data.o,ov_SC05_002_jr_8015AE2C.o,tail11.data.o,ov_SC05_002_jr_8015C32C.o,tail12.data.o,ov_SC05_002_jr_8016AB6C.o,tail13.data.o,ov_SC05_002_jr_801734BC.o,tail14.data.o,ov_SC05_002_jr_80178D40.o,tail15.data.o,ov_SC05_002_jr_8017A4AC.o,tail16.data.o,ov_SC05_002_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_002/ov_SC05_002_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_002/ov_SC05_002_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_002/ov_SC05_002_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2521,7 +2521,7 @@ ov_SC05_003_ELF := $(ov_SC05_003_OUT).elf ov_SC05_003_MAPFILE := $(ov_SC05_003_OUT).map ov_SC05_003_LD_SCRIPT := $(ov_SC05_003_OUT).ld ov_SC05_003_SPLAT_YAML := config/splat.ov_SC05_003.yaml -ov_SC05_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_003_jr_8012ACE0.o,tail2.data.o,ov_SC05_003_jr_801380E0.o,tail3.data.o,ov_SC05_003_jr_8013F350.o,tail4.data.o,ov_SC05_003_jr_8013FFD8.o,tail5.data.o,ov_SC05_003_jr_8015444C.o,tail6.data.o,ov_SC05_003_jr_80154C24.o,tail7.data.o,ov_SC05_003_jr_80159C84.o,tail8.data.o,ov_SC05_003_jr_8015A3C8.o,tail9.data.o,ov_SC05_003_jr_8015AE2C.o,tail10.data.o,ov_SC05_003_jr_8015C32C.o,tail11.data.o,ov_SC05_003_jr_8016AB6C.o,tail12.data.o,ov_SC05_003_jr_801734BC.o,tail13.data.o,ov_SC05_003_jr_80178D40.o,tail14.data.o,ov_SC05_003_jr_8017A4AC.o,tail15.data.o,ov_SC05_003_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_003_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_003_jr_8012ACE0.o,tail2.data.o,ov_SC05_003_jr_801380E0.o,tail3.data.o,ov_SC05_003_jr_8013F350.o,tail4.data.o,ov_SC05_003_jr_8013FFD8.o,tail5.data.o,ov_SC05_003_jr_8015444C.o,tail6.data.o,ov_SC05_003_jr_80154C24.o,tail7.data.o,ov_SC05_003_jr_801588CC.o,tail8.data.o,ov_SC05_003_jr_80159C84.o,tail9.data.o,ov_SC05_003_jr_8015A3C8.o,tail10.data.o,ov_SC05_003_jr_8015AE2C.o,tail11.data.o,ov_SC05_003_jr_8015C32C.o,tail12.data.o,ov_SC05_003_jr_8016AB6C.o,tail13.data.o,ov_SC05_003_jr_801734BC.o,tail14.data.o,ov_SC05_003_jr_80178D40.o,tail15.data.o,ov_SC05_003_jr_8017A4AC.o,tail16.data.o,ov_SC05_003_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_003/ov_SC05_003_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_003/ov_SC05_003_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_003/ov_SC05_003_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2546,7 +2546,7 @@ ov_SC05_004_ELF := $(ov_SC05_004_OUT).elf ov_SC05_004_MAPFILE := $(ov_SC05_004_OUT).map ov_SC05_004_LD_SCRIPT := $(ov_SC05_004_OUT).ld ov_SC05_004_SPLAT_YAML := config/splat.ov_SC05_004.yaml -ov_SC05_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_004_jr_8012ACE0.o,tail2.data.o,ov_SC05_004_jr_801380E0.o,tail3.data.o,ov_SC05_004_jr_8013F350.o,tail4.data.o,ov_SC05_004_jr_8015444C.o,tail5.data.o,ov_SC05_004_jr_80154C24.o,tail6.data.o,ov_SC05_004_jr_80159C84.o,tail7.data.o,ov_SC05_004_jr_8015A3C8.o,tail8.data.o,ov_SC05_004_jr_8015AE2C.o,tail9.data.o,ov_SC05_004_jr_8015C32C.o,tail10.data.o,ov_SC05_004_jr_8016AB6C.o,tail11.data.o,ov_SC05_004_jr_801734BC.o,tail12.data.o,ov_SC05_004_jr_80178D40.o,tail13.data.o,ov_SC05_004_jr_8017A4AC.o,tail14.data.o,ov_SC05_004_jr_8017BEBC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_004_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_004_jr_8012ACE0.o,tail2.data.o,ov_SC05_004_jr_801380E0.o,tail3.data.o,ov_SC05_004_jr_8013F350.o,tail4.data.o,ov_SC05_004_jr_8015444C.o,tail5.data.o,ov_SC05_004_jr_80154C24.o,tail6.data.o,ov_SC05_004_jr_801588CC.o,tail7.data.o,ov_SC05_004_jr_80159C84.o,tail8.data.o,ov_SC05_004_jr_8015A3C8.o,tail9.data.o,ov_SC05_004_jr_8015AE2C.o,tail10.data.o,ov_SC05_004_jr_8015C32C.o,tail11.data.o,ov_SC05_004_jr_8016AB6C.o,tail12.data.o,ov_SC05_004_jr_801734BC.o,tail13.data.o,ov_SC05_004_jr_80178D40.o,tail14.data.o,ov_SC05_004_jr_8017A4AC.o,tail15.data.o,ov_SC05_004_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_004/ov_SC05_004_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_004/ov_SC05_004_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_004/ov_SC05_004_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2571,7 +2571,7 @@ ov_SC05_005_ELF := $(ov_SC05_005_OUT).elf ov_SC05_005_MAPFILE := $(ov_SC05_005_OUT).map ov_SC05_005_LD_SCRIPT := $(ov_SC05_005_OUT).ld ov_SC05_005_SPLAT_YAML := config/splat.ov_SC05_005.yaml -ov_SC05_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_005_jr_8012ACE0.o,tail2.data.o,ov_SC05_005_jr_801380E0.o,tail3.data.o,ov_SC05_005_jr_8013F350.o,tail4.data.o,ov_SC05_005_jr_8013FFD8.o,tail5.data.o,ov_SC05_005_jr_8015444C.o,tail6.data.o,ov_SC05_005_jr_80154C24.o,tail7.data.o,ov_SC05_005_jr_80159C84.o,tail8.data.o,ov_SC05_005_jr_8015A3C8.o,tail9.data.o,ov_SC05_005_jr_8015AE2C.o,tail10.data.o,ov_SC05_005_jr_8015C32C.o,tail11.data.o,ov_SC05_005_jr_8016AB6C.o,tail12.data.o,ov_SC05_005_jr_801734BC.o,tail13.data.o,ov_SC05_005_jr_80178D40.o,tail14.data.o,ov_SC05_005_jr_8017A4AC.o,tail15.data.o,ov_SC05_005_jr_8017D898.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_005_jr_8012ACE0.o,tail2.data.o,ov_SC05_005_jr_801380E0.o,tail3.data.o,ov_SC05_005_jr_8013F350.o,tail4.data.o,ov_SC05_005_jr_8013FFD8.o,tail5.data.o,ov_SC05_005_jr_8015444C.o,tail6.data.o,ov_SC05_005_jr_80154C24.o,tail7.data.o,ov_SC05_005_jr_801588CC.o,tail8.data.o,ov_SC05_005_jr_80159C84.o,tail9.data.o,ov_SC05_005_jr_8015A3C8.o,tail10.data.o,ov_SC05_005_jr_8015AE2C.o,tail11.data.o,ov_SC05_005_jr_8015C32C.o,tail12.data.o,ov_SC05_005_jr_8016AB6C.o,tail13.data.o,ov_SC05_005_jr_801734BC.o,tail14.data.o,ov_SC05_005_jr_80178D40.o,tail15.data.o,ov_SC05_005_jr_8017A4AC.o,tail16.data.o,ov_SC05_005_jr_8017D898.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_005/ov_SC05_005_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_005/ov_SC05_005_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_005/ov_SC05_005_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2596,7 +2596,7 @@ ov_SC05_006_ELF := $(ov_SC05_006_OUT).elf ov_SC05_006_MAPFILE := $(ov_SC05_006_OUT).map ov_SC05_006_LD_SCRIPT := $(ov_SC05_006_OUT).ld ov_SC05_006_SPLAT_YAML := config/splat.ov_SC05_006.yaml -ov_SC05_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_006_jr_8012ACE0.o,tail2.data.o,ov_SC05_006_jr_801380E0.o,tail3.data.o,ov_SC05_006_jr_8013F350.o,tail4.data.o,ov_SC05_006_jr_8013FFD8.o,tail5.data.o,ov_SC05_006_jr_8015444C.o,tail6.data.o,ov_SC05_006_jr_80154C24.o,tail7.data.o,ov_SC05_006_jr_80159C84.o,tail8.data.o,ov_SC05_006_jr_8015A3C8.o,tail9.data.o,ov_SC05_006_jr_8015AE2C.o,tail10.data.o,ov_SC05_006_jr_8015C32C.o,tail11.data.o,ov_SC05_006_jr_8016AB6C.o,tail12.data.o,ov_SC05_006_jr_801734BC.o,tail13.data.o,ov_SC05_006_jr_80178D40.o,tail14.data.o,ov_SC05_006_jr_8017A4AC.o,tail15.data.o,ov_SC05_006_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_006_jr_8012ACE0.o,tail2.data.o,ov_SC05_006_jr_801380E0.o,tail3.data.o,ov_SC05_006_jr_8013F350.o,tail4.data.o,ov_SC05_006_jr_8013FFD8.o,tail5.data.o,ov_SC05_006_jr_8015444C.o,tail6.data.o,ov_SC05_006_jr_80154C24.o,tail7.data.o,ov_SC05_006_jr_801588CC.o,tail8.data.o,ov_SC05_006_jr_80159C84.o,tail9.data.o,ov_SC05_006_jr_8015A3C8.o,tail10.data.o,ov_SC05_006_jr_8015AE2C.o,tail11.data.o,ov_SC05_006_jr_8015C32C.o,tail12.data.o,ov_SC05_006_jr_8016AB6C.o,tail13.data.o,ov_SC05_006_jr_801734BC.o,tail14.data.o,ov_SC05_006_jr_80178D40.o,tail15.data.o,ov_SC05_006_jr_8017A4AC.o,tail16.data.o,ov_SC05_006_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_006/ov_SC05_006_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_006/ov_SC05_006_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_006/ov_SC05_006_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2621,7 +2621,7 @@ ov_SC05_007_ELF := $(ov_SC05_007_OUT).elf ov_SC05_007_MAPFILE := $(ov_SC05_007_OUT).map ov_SC05_007_LD_SCRIPT := $(ov_SC05_007_OUT).ld ov_SC05_007_SPLAT_YAML := config/splat.ov_SC05_007.yaml -ov_SC05_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_007_jr_8012ACE0.o,tail2.data.o,ov_SC05_007_jr_801380E0.o,tail3.data.o,ov_SC05_007_jr_8013F350.o,tail4.data.o,ov_SC05_007_jr_8013FFD8.o,tail5.data.o,ov_SC05_007_jr_8015444C.o,tail6.data.o,ov_SC05_007_jr_80154C24.o,tail7.data.o,ov_SC05_007_jr_80159C84.o,tail8.data.o,ov_SC05_007_jr_8015A3C8.o,tail9.data.o,ov_SC05_007_jr_8015AE2C.o,tail10.data.o,ov_SC05_007_jr_8015C32C.o,tail11.data.o,ov_SC05_007_jr_8016AB6C.o,tail12.data.o,ov_SC05_007_jr_801734BC.o,tail13.data.o,ov_SC05_007_jr_80178D40.o,tail14.data.o,ov_SC05_007_jr_8017A4AC.o,tail15.data.o,ov_SC05_007_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_007_jr_8012ACE0.o,tail2.data.o,ov_SC05_007_jr_801380E0.o,tail3.data.o,ov_SC05_007_jr_8013F350.o,tail4.data.o,ov_SC05_007_jr_8013FFD8.o,tail5.data.o,ov_SC05_007_jr_8015444C.o,tail6.data.o,ov_SC05_007_jr_80154C24.o,tail7.data.o,ov_SC05_007_jr_801588CC.o,tail8.data.o,ov_SC05_007_jr_80159C84.o,tail9.data.o,ov_SC05_007_jr_8015A3C8.o,tail10.data.o,ov_SC05_007_jr_8015AE2C.o,tail11.data.o,ov_SC05_007_jr_8015C32C.o,tail12.data.o,ov_SC05_007_jr_8016AB6C.o,tail13.data.o,ov_SC05_007_jr_801734BC.o,tail14.data.o,ov_SC05_007_jr_80178D40.o,tail15.data.o,ov_SC05_007_jr_8017A4AC.o,tail16.data.o,ov_SC05_007_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_007/ov_SC05_007_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_007/ov_SC05_007_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_007/ov_SC05_007_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2646,7 +2646,7 @@ ov_SC05_008_ELF := $(ov_SC05_008_OUT).elf ov_SC05_008_MAPFILE := $(ov_SC05_008_OUT).map ov_SC05_008_LD_SCRIPT := $(ov_SC05_008_OUT).ld ov_SC05_008_SPLAT_YAML := config/splat.ov_SC05_008.yaml -ov_SC05_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_008_jr_8012ACE0.o,tail2.data.o,ov_SC05_008_jr_801380E0.o,tail3.data.o,ov_SC05_008_jr_8013F350.o,tail4.data.o,ov_SC05_008_jr_8013FFD8.o,tail5.data.o,ov_SC05_008_jr_8015444C.o,tail6.data.o,ov_SC05_008_jr_80154C24.o,tail7.data.o,ov_SC05_008_jr_80159C84.o,tail8.data.o,ov_SC05_008_jr_8015A3C8.o,tail9.data.o,ov_SC05_008_jr_8015AE2C.o,tail10.data.o,ov_SC05_008_jr_8015C32C.o,tail11.data.o,ov_SC05_008_jr_8016AB6C.o,tail12.data.o,ov_SC05_008_jr_801734BC.o,tail13.data.o,ov_SC05_008_jr_80178D40.o,tail14.data.o,ov_SC05_008_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_008_jr_8012ACE0.o,tail2.data.o,ov_SC05_008_jr_801380E0.o,tail3.data.o,ov_SC05_008_jr_8013F350.o,tail4.data.o,ov_SC05_008_jr_8013FFD8.o,tail5.data.o,ov_SC05_008_jr_8015444C.o,tail6.data.o,ov_SC05_008_jr_80154C24.o,tail7.data.o,ov_SC05_008_jr_801588CC.o,tail8.data.o,ov_SC05_008_jr_80159C84.o,tail9.data.o,ov_SC05_008_jr_8015A3C8.o,tail10.data.o,ov_SC05_008_jr_8015AE2C.o,tail11.data.o,ov_SC05_008_jr_8015C32C.o,tail12.data.o,ov_SC05_008_jr_8016AB6C.o,tail13.data.o,ov_SC05_008_jr_801734BC.o,tail14.data.o,ov_SC05_008_jr_80178D40.o,tail15.data.o,ov_SC05_008_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_008/ov_SC05_008_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_008/ov_SC05_008_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_008/ov_SC05_008_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2671,7 +2671,7 @@ ov_SC05_009_ELF := $(ov_SC05_009_OUT).elf ov_SC05_009_MAPFILE := $(ov_SC05_009_OUT).map ov_SC05_009_LD_SCRIPT := $(ov_SC05_009_OUT).ld ov_SC05_009_SPLAT_YAML := config/splat.ov_SC05_009.yaml -ov_SC05_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_009_jr_8012ACE0.o,tail2.data.o,ov_SC05_009_jr_801380E0.o,tail3.data.o,ov_SC05_009_jr_8013F350.o,tail4.data.o,ov_SC05_009_jr_8013FFD8.o,tail5.data.o,ov_SC05_009_jr_8015444C.o,tail6.data.o,ov_SC05_009_jr_80154C24.o,tail7.data.o,ov_SC05_009_jr_80159C84.o,tail8.data.o,ov_SC05_009_jr_8015AE2C.o,tail9.data.o,ov_SC05_009_jr_8015C32C.o,tail10.data.o,ov_SC05_009_jr_8016AB6C.o,tail11.data.o,ov_SC05_009_jr_801734BC.o,tail12.data.o,ov_SC05_009_jr_80178D40.o,tail13.data.o,ov_SC05_009_jr_8017A4AC.o,tail14.data.o,ov_SC05_009_jr_8017BEBC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_009_jr_8012ACE0.o,tail2.data.o,ov_SC05_009_jr_801380E0.o,tail3.data.o,ov_SC05_009_jr_8013F350.o,tail4.data.o,ov_SC05_009_jr_8013FFD8.o,tail5.data.o,ov_SC05_009_jr_8015444C.o,tail6.data.o,ov_SC05_009_jr_80154C24.o,tail7.data.o,ov_SC05_009_jr_801588CC.o,tail8.data.o,ov_SC05_009_jr_80159C84.o,tail9.data.o,ov_SC05_009_jr_8015AE2C.o,tail10.data.o,ov_SC05_009_jr_8015C32C.o,tail11.data.o,ov_SC05_009_jr_8016AB6C.o,tail12.data.o,ov_SC05_009_jr_801734BC.o,tail13.data.o,ov_SC05_009_jr_80178D40.o,tail14.data.o,ov_SC05_009_jr_8017A4AC.o,tail15.data.o,ov_SC05_009_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_009/ov_SC05_009_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_009/ov_SC05_009_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_009/ov_SC05_009_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2696,7 +2696,7 @@ ov_SC05_010_ELF := $(ov_SC05_010_OUT).elf ov_SC05_010_MAPFILE := $(ov_SC05_010_OUT).map ov_SC05_010_LD_SCRIPT := $(ov_SC05_010_OUT).ld ov_SC05_010_SPLAT_YAML := config/splat.ov_SC05_010.yaml -ov_SC05_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_010_jr_8012ACE0.o,tail2.data.o,ov_SC05_010_jr_801380E0.o,tail3.data.o,ov_SC05_010_jr_8013F350.o,tail4.data.o,ov_SC05_010_jr_8013FFD8.o,tail5.data.o,ov_SC05_010_jr_8015444C.o,tail6.data.o,ov_SC05_010_jr_80154C24.o,tail7.data.o,ov_SC05_010_jr_80159C84.o,tail8.data.o,ov_SC05_010_jr_8015A3C8.o,tail9.data.o,ov_SC05_010_jr_8015AE2C.o,tail10.data.o,ov_SC05_010_jr_8015C32C.o,tail11.data.o,ov_SC05_010_jr_8016AB6C.o,tail12.data.o,ov_SC05_010_jr_801734BC.o,tail13.data.o,ov_SC05_010_jr_80178D40.o,tail14.data.o,ov_SC05_010_jr_8017A4AC.o,tail15.data.o,ov_SC05_010_jr_8017C8D0.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_010_jr_8012ACE0.o,tail2.data.o,ov_SC05_010_jr_801380E0.o,tail3.data.o,ov_SC05_010_jr_8013F350.o,tail4.data.o,ov_SC05_010_jr_8013FFD8.o,tail5.data.o,ov_SC05_010_jr_8015444C.o,tail6.data.o,ov_SC05_010_jr_80154C24.o,tail7.data.o,ov_SC05_010_jr_801588CC.o,tail8.data.o,ov_SC05_010_jr_80159C84.o,tail9.data.o,ov_SC05_010_jr_8015A3C8.o,tail10.data.o,ov_SC05_010_jr_8015AE2C.o,tail11.data.o,ov_SC05_010_jr_8015C32C.o,tail12.data.o,ov_SC05_010_jr_8016AB6C.o,tail13.data.o,ov_SC05_010_jr_801734BC.o,tail14.data.o,ov_SC05_010_jr_80178D40.o,tail15.data.o,ov_SC05_010_jr_8017A4AC.o,tail16.data.o,ov_SC05_010_jr_8017C8D0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_010/ov_SC05_010_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_010/ov_SC05_010_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_010/ov_SC05_010_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2721,7 +2721,7 @@ ov_SC05_011_ELF := $(ov_SC05_011_OUT).elf ov_SC05_011_MAPFILE := $(ov_SC05_011_OUT).map ov_SC05_011_LD_SCRIPT := $(ov_SC05_011_OUT).ld ov_SC05_011_SPLAT_YAML := config/splat.ov_SC05_011.yaml -ov_SC05_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_011_jr_8012ACE0.o,tail2.data.o,ov_SC05_011_jr_801380E0.o,tail3.data.o,ov_SC05_011_jr_8013F350.o,tail4.data.o,ov_SC05_011_jr_8013FFD8.o,tail5.data.o,ov_SC05_011_jr_8015444C.o,tail6.data.o,ov_SC05_011_jr_80154C24.o,tail7.data.o,ov_SC05_011_jr_80159C84.o,tail8.data.o,ov_SC05_011_jr_8015A3C8.o,tail9.data.o,ov_SC05_011_jr_8015AE2C.o,tail10.data.o,ov_SC05_011_jr_8015C32C.o,tail11.data.o,ov_SC05_011_jr_8016AB6C.o,tail12.data.o,ov_SC05_011_jr_801734BC.o,tail13.data.o,ov_SC05_011_jr_80178D40.o,tail14.data.o,ov_SC05_011_jr_8017A4AC.o,tail15.data.o,ov_SC05_011_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_011_jr_8012ACE0.o,tail2.data.o,ov_SC05_011_jr_801380E0.o,tail3.data.o,ov_SC05_011_jr_8013F350.o,tail4.data.o,ov_SC05_011_jr_8013FFD8.o,tail5.data.o,ov_SC05_011_jr_8015444C.o,tail6.data.o,ov_SC05_011_jr_80154C24.o,tail7.data.o,ov_SC05_011_jr_801588CC.o,tail8.data.o,ov_SC05_011_jr_80159C84.o,tail9.data.o,ov_SC05_011_jr_8015A3C8.o,tail10.data.o,ov_SC05_011_jr_8015AE2C.o,tail11.data.o,ov_SC05_011_jr_8015C32C.o,tail12.data.o,ov_SC05_011_jr_8016AB6C.o,tail13.data.o,ov_SC05_011_jr_801734BC.o,tail14.data.o,ov_SC05_011_jr_80178D40.o,tail15.data.o,ov_SC05_011_jr_8017A4AC.o,tail16.data.o,ov_SC05_011_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_011/ov_SC05_011_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_011/ov_SC05_011_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_011/ov_SC05_011_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2746,7 +2746,7 @@ ov_SC05_017_ELF := $(ov_SC05_017_OUT).elf ov_SC05_017_MAPFILE := $(ov_SC05_017_OUT).map ov_SC05_017_LD_SCRIPT := $(ov_SC05_017_OUT).ld ov_SC05_017_SPLAT_YAML := config/splat.ov_SC05_017.yaml -ov_SC05_017_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_017_jr_8012ACE0.o,tail2.data.o,ov_SC05_017_jr_801380E0.o,tail3.data.o,ov_SC05_017_jr_8013F350.o,tail4.data.o,ov_SC05_017_jr_8013FFD8.o,tail5.data.o,ov_SC05_017_jr_8015444C.o,tail6.data.o,ov_SC05_017_jr_80154C24.o,tail7.data.o,ov_SC05_017_jr_80159C84.o,tail8.data.o,ov_SC05_017_jr_8015A3C8.o,tail9.data.o,ov_SC05_017_jr_8015AE2C.o,tail10.data.o,ov_SC05_017_jr_8015C32C.o,tail11.data.o,ov_SC05_017_jr_8016AB6C.o,tail12.data.o,ov_SC05_017_jr_801734BC.o,tail13.data.o,ov_SC05_017_jr_80178D40.o,tail14.data.o,ov_SC05_017_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_017_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_017_jr_8012ACE0.o,tail2.data.o,ov_SC05_017_jr_801380E0.o,tail3.data.o,ov_SC05_017_jr_8013F350.o,tail4.data.o,ov_SC05_017_jr_8013FFD8.o,tail5.data.o,ov_SC05_017_jr_8015444C.o,tail6.data.o,ov_SC05_017_jr_80154C24.o,tail7.data.o,ov_SC05_017_jr_801588CC.o,tail8.data.o,ov_SC05_017_jr_80159C84.o,tail9.data.o,ov_SC05_017_jr_8015A3C8.o,tail10.data.o,ov_SC05_017_jr_8015AE2C.o,tail11.data.o,ov_SC05_017_jr_8015C32C.o,tail12.data.o,ov_SC05_017_jr_8016AB6C.o,tail13.data.o,ov_SC05_017_jr_801734BC.o,tail14.data.o,ov_SC05_017_jr_80178D40.o,tail15.data.o,ov_SC05_017_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_017/ov_SC05_017_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_017/ov_SC05_017_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_017/ov_SC05_017_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2771,7 +2771,7 @@ ov_SC05_018_ELF := $(ov_SC05_018_OUT).elf ov_SC05_018_MAPFILE := $(ov_SC05_018_OUT).map ov_SC05_018_LD_SCRIPT := $(ov_SC05_018_OUT).ld ov_SC05_018_SPLAT_YAML := config/splat.ov_SC05_018.yaml -ov_SC05_018_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_018_jr_8012ACE0.o,tail2.data.o,ov_SC05_018_jr_801380E0.o,tail3.data.o,ov_SC05_018_jr_8013F350.o,tail4.data.o,ov_SC05_018_jr_8013FFD8.o,tail5.data.o,ov_SC05_018_jr_8015444C.o,tail6.data.o,ov_SC05_018_jr_80154C24.o,tail7.data.o,ov_SC05_018_jr_80159C84.o,tail8.data.o,ov_SC05_018_jr_8015A3C8.o,tail9.data.o,ov_SC05_018_jr_8015AE2C.o,tail10.data.o,ov_SC05_018_jr_8015C32C.o,tail11.data.o,ov_SC05_018_jr_8016AB6C.o,tail12.data.o,ov_SC05_018_jr_801734BC.o,tail13.data.o,ov_SC05_018_jr_80178D40.o,tail14.data.o,ov_SC05_018_jr_8017A4AC.o,tail15.data.o,ov_SC05_018_jr_8017D604.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_018_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_018_jr_8012ACE0.o,tail2.data.o,ov_SC05_018_jr_801380E0.o,tail3.data.o,ov_SC05_018_jr_8013F350.o,tail4.data.o,ov_SC05_018_jr_8013FFD8.o,tail5.data.o,ov_SC05_018_jr_8015444C.o,tail6.data.o,ov_SC05_018_jr_80154C24.o,tail7.data.o,ov_SC05_018_jr_801588CC.o,tail8.data.o,ov_SC05_018_jr_80159C84.o,tail9.data.o,ov_SC05_018_jr_8015A3C8.o,tail10.data.o,ov_SC05_018_jr_8015AE2C.o,tail11.data.o,ov_SC05_018_jr_8015C32C.o,tail12.data.o,ov_SC05_018_jr_8016AB6C.o,tail13.data.o,ov_SC05_018_jr_801734BC.o,tail14.data.o,ov_SC05_018_jr_80178D40.o,tail15.data.o,ov_SC05_018_jr_8017A4AC.o,tail16.data.o,ov_SC05_018_jr_8017D604.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_018/ov_SC05_018_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_018/ov_SC05_018_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_018/ov_SC05_018_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2796,7 +2796,7 @@ ov_SC05_019_ELF := $(ov_SC05_019_OUT).elf ov_SC05_019_MAPFILE := $(ov_SC05_019_OUT).map ov_SC05_019_LD_SCRIPT := $(ov_SC05_019_OUT).ld ov_SC05_019_SPLAT_YAML := config/splat.ov_SC05_019.yaml -ov_SC05_019_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_019_jr_8012ACE0.o,tail2.data.o,ov_SC05_019_jr_801380E0.o,tail3.data.o,ov_SC05_019_jr_8013F350.o,tail4.data.o,ov_SC05_019_jr_8013FFD8.o,tail5.data.o,ov_SC05_019_jr_8015444C.o,tail6.data.o,ov_SC05_019_jr_80154C24.o,tail7.data.o,ov_SC05_019_jr_80159C84.o,tail8.data.o,ov_SC05_019_jr_8015A3C8.o,tail9.data.o,ov_SC05_019_jr_8015AE2C.o,tail10.data.o,ov_SC05_019_jr_8015C32C.o,tail11.data.o,ov_SC05_019_jr_8016AB6C.o,tail12.data.o,ov_SC05_019_jr_801734BC.o,tail13.data.o,ov_SC05_019_jr_80178D40.o,tail14.data.o,ov_SC05_019_jr_8017A4AC.o,tail15.data.o,ov_SC05_019_jr_8017D5C0.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC05_019_JTBL_INTERLEAVE := --order tail.data.o,ov_SC05_019_jr_8012ACE0.o,tail2.data.o,ov_SC05_019_jr_801380E0.o,tail3.data.o,ov_SC05_019_jr_8013F350.o,tail4.data.o,ov_SC05_019_jr_8013FFD8.o,tail5.data.o,ov_SC05_019_jr_8015444C.o,tail6.data.o,ov_SC05_019_jr_80154C24.o,tail7.data.o,ov_SC05_019_jr_801588CC.o,tail8.data.o,ov_SC05_019_jr_80159C84.o,tail9.data.o,ov_SC05_019_jr_8015A3C8.o,tail10.data.o,ov_SC05_019_jr_8015AE2C.o,tail11.data.o,ov_SC05_019_jr_8015C32C.o,tail12.data.o,ov_SC05_019_jr_8016AB6C.o,tail13.data.o,ov_SC05_019_jr_801734BC.o,tail14.data.o,ov_SC05_019_jr_80178D40.o,tail15.data.o,ov_SC05_019_jr_8017A4AC.o,tail16.data.o,ov_SC05_019_jr_8017D5C0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC05_019/ov_SC05_019_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC05_019/ov_SC05_019_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC05_019/ov_SC05_019_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2821,7 +2821,7 @@ ov_SC06_006_ELF := $(ov_SC06_006_OUT).elf ov_SC06_006_MAPFILE := $(ov_SC06_006_OUT).map ov_SC06_006_LD_SCRIPT := $(ov_SC06_006_OUT).ld ov_SC06_006_SPLAT_YAML := config/splat.ov_SC06_006.yaml -ov_SC06_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_006_jr_8012ACE0.o,tail2.data.o,ov_SC06_006_jr_801380E0.o,tail3.data.o,ov_SC06_006_jr_8013F350.o,tail4.data.o,ov_SC06_006_jr_8013FFD8.o,tail5.data.o,ov_SC06_006_jr_8015444C.o,tail6.data.o,ov_SC06_006_jr_80154C24.o,tail7.data.o,ov_SC06_006_jr_80159C84.o,tail8.data.o,ov_SC06_006_jr_8015A3C8.o,tail9.data.o,ov_SC06_006_jr_8015AE2C.o,tail10.data.o,ov_SC06_006_jr_8015C32C.o,tail11.data.o,ov_SC06_006_jr_8016AB6C.o,tail12.data.o,ov_SC06_006_jr_801734BC.o,tail13.data.o,ov_SC06_006_jr_80178D40.o,tail14.data.o,ov_SC06_006_jr_8017A4AC.o,tail15.data.o,ov_SC06_006_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_006_jr_8012ACE0.o,tail2.data.o,ov_SC06_006_jr_801380E0.o,tail3.data.o,ov_SC06_006_jr_8013F350.o,tail4.data.o,ov_SC06_006_jr_8013FFD8.o,tail5.data.o,ov_SC06_006_jr_8015444C.o,tail6.data.o,ov_SC06_006_jr_80154C24.o,tail7.data.o,ov_SC06_006_jr_801588CC.o,tail8.data.o,ov_SC06_006_jr_80159C84.o,tail9.data.o,ov_SC06_006_jr_8015A3C8.o,tail10.data.o,ov_SC06_006_jr_8015AE2C.o,tail11.data.o,ov_SC06_006_jr_8015C32C.o,tail12.data.o,ov_SC06_006_jr_8016AB6C.o,tail13.data.o,ov_SC06_006_jr_801734BC.o,tail14.data.o,ov_SC06_006_jr_80178D40.o,tail15.data.o,ov_SC06_006_jr_8017A4AC.o,tail16.data.o,ov_SC06_006_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_006/ov_SC06_006_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_006/ov_SC06_006_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_006/ov_SC06_006_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2846,7 +2846,7 @@ ov_SC06_008_ELF := $(ov_SC06_008_OUT).elf ov_SC06_008_MAPFILE := $(ov_SC06_008_OUT).map ov_SC06_008_LD_SCRIPT := $(ov_SC06_008_OUT).ld ov_SC06_008_SPLAT_YAML := config/splat.ov_SC06_008.yaml -ov_SC06_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_008_jr_8012ACE0.o,tail2.data.o,ov_SC06_008_jr_801380E0.o,tail3.data.o,ov_SC06_008_jr_8013F350.o,tail4.data.o,ov_SC06_008_jr_8013FFD8.o,tail5.data.o,ov_SC06_008_jr_8015444C.o,tail6.data.o,ov_SC06_008_jr_80154C24.o,tail7.data.o,ov_SC06_008_jr_80159C84.o,tail8.data.o,ov_SC06_008_jr_8015A3C8.o,tail9.data.o,ov_SC06_008_jr_8015AE2C.o,tail10.data.o,ov_SC06_008_jr_8015C32C.o,tail11.data.o,ov_SC06_008_jr_8016AB6C.o,tail12.data.o,ov_SC06_008_jr_801734BC.o,tail13.data.o,ov_SC06_008_jr_80178D40.o,tail14.data.o,ov_SC06_008_jr_8017A4AC.o,tail15.data.o,ov_SC06_008_jr_8017C294.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_008_jr_8012ACE0.o,tail2.data.o,ov_SC06_008_jr_801380E0.o,tail3.data.o,ov_SC06_008_jr_8013F350.o,tail4.data.o,ov_SC06_008_jr_8013FFD8.o,tail5.data.o,ov_SC06_008_jr_8015444C.o,tail6.data.o,ov_SC06_008_jr_80154C24.o,tail7.data.o,ov_SC06_008_jr_801588CC.o,tail8.data.o,ov_SC06_008_jr_80159C84.o,tail9.data.o,ov_SC06_008_jr_8015A3C8.o,tail10.data.o,ov_SC06_008_jr_8015AE2C.o,tail11.data.o,ov_SC06_008_jr_8015C32C.o,tail12.data.o,ov_SC06_008_jr_8016AB6C.o,tail13.data.o,ov_SC06_008_jr_801734BC.o,tail14.data.o,ov_SC06_008_jr_80178D40.o,tail15.data.o,ov_SC06_008_jr_8017A4AC.o,tail16.data.o,ov_SC06_008_jr_8017C294.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_008/ov_SC06_008_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_008/ov_SC06_008_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_008/ov_SC06_008_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2871,7 +2871,7 @@ ov_SC06_010_ELF := $(ov_SC06_010_OUT).elf ov_SC06_010_MAPFILE := $(ov_SC06_010_OUT).map ov_SC06_010_LD_SCRIPT := $(ov_SC06_010_OUT).ld ov_SC06_010_SPLAT_YAML := config/splat.ov_SC06_010.yaml -ov_SC06_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_010_jr_8012ACE0.o,tail2.data.o,ov_SC06_010_jr_801380E0.o,tail3.data.o,ov_SC06_010_jr_8013F350.o,tail4.data.o,ov_SC06_010_jr_8015444C.o,tail5.data.o,ov_SC06_010_jr_80154C24.o,tail6.data.o,ov_SC06_010_jr_80159C84.o,tail7.data.o,ov_SC06_010_jr_8015A3C8.o,tail8.data.o,ov_SC06_010_jr_8015AE2C.o,tail9.data.o,ov_SC06_010_jr_8015C32C.o,tail10.data.o,ov_SC06_010_jr_8016AB6C.o,tail11.data.o,ov_SC06_010_jr_801734BC.o,tail12.data.o,ov_SC06_010_jr_80178D40.o,tail13.data.o,ov_SC06_010_jr_8017A4AC.o,tail14.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_010_jr_8012ACE0.o,tail2.data.o,ov_SC06_010_jr_801380E0.o,tail3.data.o,ov_SC06_010_jr_8013F350.o,tail4.data.o,ov_SC06_010_jr_8015444C.o,tail5.data.o,ov_SC06_010_jr_80154C24.o,tail6.data.o,ov_SC06_010_jr_801588CC.o,tail7.data.o,ov_SC06_010_jr_80159C84.o,tail8.data.o,ov_SC06_010_jr_8015A3C8.o,tail9.data.o,ov_SC06_010_jr_8015AE2C.o,tail10.data.o,ov_SC06_010_jr_8015C32C.o,tail11.data.o,ov_SC06_010_jr_8016AB6C.o,tail12.data.o,ov_SC06_010_jr_801734BC.o,tail13.data.o,ov_SC06_010_jr_80178D40.o,tail14.data.o,ov_SC06_010_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_010/ov_SC06_010_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_010/ov_SC06_010_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_010/ov_SC06_010_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2896,7 +2896,7 @@ ov_SC06_011_ELF := $(ov_SC06_011_OUT).elf ov_SC06_011_MAPFILE := $(ov_SC06_011_OUT).map ov_SC06_011_LD_SCRIPT := $(ov_SC06_011_OUT).ld ov_SC06_011_SPLAT_YAML := config/splat.ov_SC06_011.yaml -ov_SC06_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_011_jr_8012ACE0.o,tail2.data.o,ov_SC06_011_jr_801380E0.o,tail3.data.o,ov_SC06_011_jr_8013F350.o,tail4.data.o,ov_SC06_011_jr_8013FFD8.o,tail5.data.o,ov_SC06_011_jr_8015444C.o,tail6.data.o,ov_SC06_011_jr_80154C24.o,tail7.data.o,ov_SC06_011_jr_80159C84.o,tail8.data.o,ov_SC06_011_jr_8015A3C8.o,tail9.data.o,ov_SC06_011_jr_8015AE2C.o,tail10.data.o,ov_SC06_011_jr_8015C32C.o,tail11.data.o,ov_SC06_011_jr_8016AB6C.o,tail12.data.o,ov_SC06_011_jr_801734BC.o,tail13.data.o,ov_SC06_011_jr_80178D40.o,tail14.data.o,ov_SC06_011_jr_8017A4AC.o,tail15.data.o,ov_SC06_011_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_011_jr_8012ACE0.o,tail2.data.o,ov_SC06_011_jr_801380E0.o,tail3.data.o,ov_SC06_011_jr_8013F350.o,tail4.data.o,ov_SC06_011_jr_8013FFD8.o,tail5.data.o,ov_SC06_011_jr_8015444C.o,tail6.data.o,ov_SC06_011_jr_80154C24.o,tail7.data.o,ov_SC06_011_jr_801588CC.o,tail8.data.o,ov_SC06_011_jr_80159C84.o,tail9.data.o,ov_SC06_011_jr_8015A3C8.o,tail10.data.o,ov_SC06_011_jr_8015AE2C.o,tail11.data.o,ov_SC06_011_jr_8015C32C.o,tail12.data.o,ov_SC06_011_jr_8016AB6C.o,tail13.data.o,ov_SC06_011_jr_801734BC.o,tail14.data.o,ov_SC06_011_jr_80178D40.o,tail15.data.o,ov_SC06_011_jr_8017A4AC.o,tail16.data.o,ov_SC06_011_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_011/ov_SC06_011_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_011/ov_SC06_011_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_011/ov_SC06_011_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2921,7 +2921,7 @@ ov_SC06_013_ELF := $(ov_SC06_013_OUT).elf ov_SC06_013_MAPFILE := $(ov_SC06_013_OUT).map ov_SC06_013_LD_SCRIPT := $(ov_SC06_013_OUT).ld ov_SC06_013_SPLAT_YAML := config/splat.ov_SC06_013.yaml -ov_SC06_013_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_013_jr_8012ACE0.o,tail2.data.o,ov_SC06_013_jr_801380E0.o,tail3.data.o,ov_SC06_013_jr_8013F350.o,tail4.data.o,ov_SC06_013_jr_8013FFD8.o,tail5.data.o,ov_SC06_013_jr_8015444C.o,tail6.data.o,ov_SC06_013_jr_80154C24.o,tail7.data.o,ov_SC06_013_jr_80159C84.o,tail8.data.o,ov_SC06_013_jr_8015A3C8.o,tail9.data.o,ov_SC06_013_jr_8015AE2C.o,tail10.data.o,ov_SC06_013_jr_8015C32C.o,tail11.data.o,ov_SC06_013_jr_8016AB6C.o,tail12.data.o,ov_SC06_013_jr_801734BC.o,tail13.data.o,ov_SC06_013_jr_80178D40.o,tail14.data.o,ov_SC06_013_jr_8017A4AC.o,tail15.data.o,ov_SC06_013_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_013_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_013_jr_8012ACE0.o,tail2.data.o,ov_SC06_013_jr_801380E0.o,tail3.data.o,ov_SC06_013_jr_8013F350.o,tail4.data.o,ov_SC06_013_jr_8013FFD8.o,tail5.data.o,ov_SC06_013_jr_8015444C.o,tail6.data.o,ov_SC06_013_jr_80154C24.o,tail7.data.o,ov_SC06_013_jr_801588CC.o,tail8.data.o,ov_SC06_013_jr_80159C84.o,tail9.data.o,ov_SC06_013_jr_8015A3C8.o,tail10.data.o,ov_SC06_013_jr_8015AE2C.o,tail11.data.o,ov_SC06_013_jr_8015C32C.o,tail12.data.o,ov_SC06_013_jr_8016AB6C.o,tail13.data.o,ov_SC06_013_jr_801734BC.o,tail14.data.o,ov_SC06_013_jr_80178D40.o,tail15.data.o,ov_SC06_013_jr_8017A4AC.o,tail16.data.o,ov_SC06_013_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_013/ov_SC06_013_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_013/ov_SC06_013_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_013/ov_SC06_013_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2946,7 +2946,7 @@ ov_SC06_014_ELF := $(ov_SC06_014_OUT).elf ov_SC06_014_MAPFILE := $(ov_SC06_014_OUT).map ov_SC06_014_LD_SCRIPT := $(ov_SC06_014_OUT).ld ov_SC06_014_SPLAT_YAML := config/splat.ov_SC06_014.yaml -ov_SC06_014_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_014_jr_8012ACE0.o,tail2.data.o,ov_SC06_014_jr_801380E0.o,tail3.data.o,ov_SC06_014_jr_8013F350.o,tail4.data.o,ov_SC06_014_jr_8013FFD8.o,tail5.data.o,ov_SC06_014_jr_8015444C.o,tail6.data.o,ov_SC06_014_jr_80154C24.o,tail7.data.o,ov_SC06_014_jr_80159C84.o,tail8.data.o,ov_SC06_014_jr_8015A3C8.o,tail9.data.o,ov_SC06_014_jr_8015AE2C.o,tail10.data.o,ov_SC06_014_jr_8015C32C.o,tail11.data.o,ov_SC06_014_jr_8016AB6C.o,tail12.data.o,ov_SC06_014_jr_801734BC.o,tail13.data.o,ov_SC06_014_jr_80178D40.o,tail14.data.o,ov_SC06_014_jr_8017A4AC.o,tail15.data.o,ov_SC06_014_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_014_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_014_jr_8012ACE0.o,tail2.data.o,ov_SC06_014_jr_801380E0.o,tail3.data.o,ov_SC06_014_jr_8013F350.o,tail4.data.o,ov_SC06_014_jr_8013FFD8.o,tail5.data.o,ov_SC06_014_jr_8015444C.o,tail6.data.o,ov_SC06_014_jr_80154C24.o,tail7.data.o,ov_SC06_014_jr_801588CC.o,tail8.data.o,ov_SC06_014_jr_80159C84.o,tail9.data.o,ov_SC06_014_jr_8015A3C8.o,tail10.data.o,ov_SC06_014_jr_8015AE2C.o,tail11.data.o,ov_SC06_014_jr_8015C32C.o,tail12.data.o,ov_SC06_014_jr_8016AB6C.o,tail13.data.o,ov_SC06_014_jr_801734BC.o,tail14.data.o,ov_SC06_014_jr_80178D40.o,tail15.data.o,ov_SC06_014_jr_8017A4AC.o,tail16.data.o,ov_SC06_014_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_014/ov_SC06_014_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_014/ov_SC06_014_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_014/ov_SC06_014_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2971,7 +2971,7 @@ ov_SC06_015_ELF := $(ov_SC06_015_OUT).elf ov_SC06_015_MAPFILE := $(ov_SC06_015_OUT).map ov_SC06_015_LD_SCRIPT := $(ov_SC06_015_OUT).ld ov_SC06_015_SPLAT_YAML := config/splat.ov_SC06_015.yaml -ov_SC06_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_015_jr_8012ACE0.o,tail2.data.o,ov_SC06_015_jr_801380E0.o,tail3.data.o,ov_SC06_015_jr_8013F350.o,tail4.data.o,ov_SC06_015_jr_8013FFD8.o,tail5.data.o,ov_SC06_015_jr_8015444C.o,tail6.data.o,ov_SC06_015_jr_80154C24.o,tail7.data.o,ov_SC06_015_jr_80159C84.o,tail8.data.o,ov_SC06_015_jr_8015A3C8.o,tail9.data.o,ov_SC06_015_jr_8015AE2C.o,tail10.data.o,ov_SC06_015_jr_8015C32C.o,tail11.data.o,ov_SC06_015_jr_8016AB6C.o,tail12.data.o,ov_SC06_015_jr_801734BC.o,tail13.data.o,ov_SC06_015_jr_80178D40.o,tail14.data.o,ov_SC06_015_jr_8017A4AC.o,tail15.data.o,ov_SC06_015_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_015_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_015_jr_8012ACE0.o,tail2.data.o,ov_SC06_015_jr_801380E0.o,tail3.data.o,ov_SC06_015_jr_8013F350.o,tail4.data.o,ov_SC06_015_jr_8013FFD8.o,tail5.data.o,ov_SC06_015_jr_8015444C.o,tail6.data.o,ov_SC06_015_jr_80154C24.o,tail7.data.o,ov_SC06_015_jr_801588CC.o,tail8.data.o,ov_SC06_015_jr_80159C84.o,tail9.data.o,ov_SC06_015_jr_8015A3C8.o,tail10.data.o,ov_SC06_015_jr_8015AE2C.o,tail11.data.o,ov_SC06_015_jr_8015C32C.o,tail12.data.o,ov_SC06_015_jr_8016AB6C.o,tail13.data.o,ov_SC06_015_jr_801734BC.o,tail14.data.o,ov_SC06_015_jr_80178D40.o,tail15.data.o,ov_SC06_015_jr_8017A4AC.o,tail16.data.o,ov_SC06_015_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_015/ov_SC06_015_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_015/ov_SC06_015_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_015/ov_SC06_015_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -2996,7 +2996,7 @@ ov_SC06_016_ELF := $(ov_SC06_016_OUT).elf ov_SC06_016_MAPFILE := $(ov_SC06_016_OUT).map ov_SC06_016_LD_SCRIPT := $(ov_SC06_016_OUT).ld ov_SC06_016_SPLAT_YAML := config/splat.ov_SC06_016.yaml -ov_SC06_016_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_016_jr_8012ACE0.o,tail2.data.o,ov_SC06_016_jr_801380E0.o,tail3.data.o,ov_SC06_016_jr_8013F350.o,tail4.data.o,ov_SC06_016_jr_8013FFD8.o,tail5.data.o,ov_SC06_016_jr_8015444C.o,tail6.data.o,ov_SC06_016_jr_80154C24.o,tail7.data.o,ov_SC06_016_jr_80159C84.o,tail8.data.o,ov_SC06_016_jr_8015A3C8.o,tail9.data.o,ov_SC06_016_jr_8015AE2C.o,tail10.data.o,ov_SC06_016_jr_8015C32C.o,tail11.data.o,ov_SC06_016_jr_8016AB6C.o,tail12.data.o,ov_SC06_016_jr_801734BC.o,tail13.data.o,ov_SC06_016_jr_80178D40.o,tail14.data.o,ov_SC06_016_jr_8017A4AC.o,tail15.data.o,ov_SC06_016_jr_8017C8D0.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_016_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_016_jr_8012ACE0.o,tail2.data.o,ov_SC06_016_jr_801380E0.o,tail3.data.o,ov_SC06_016_jr_8013F350.o,tail4.data.o,ov_SC06_016_jr_8013FFD8.o,tail5.data.o,ov_SC06_016_jr_8015444C.o,tail6.data.o,ov_SC06_016_jr_80154C24.o,tail7.data.o,ov_SC06_016_jr_801588CC.o,tail8.data.o,ov_SC06_016_jr_80159C84.o,tail9.data.o,ov_SC06_016_jr_8015A3C8.o,tail10.data.o,ov_SC06_016_jr_8015AE2C.o,tail11.data.o,ov_SC06_016_jr_8015C32C.o,tail12.data.o,ov_SC06_016_jr_8016AB6C.o,tail13.data.o,ov_SC06_016_jr_801734BC.o,tail14.data.o,ov_SC06_016_jr_80178D40.o,tail15.data.o,ov_SC06_016_jr_8017A4AC.o,tail16.data.o,ov_SC06_016_jr_8017C8D0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_016/ov_SC06_016_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_016/ov_SC06_016_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_016/ov_SC06_016_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3021,7 +3021,7 @@ ov_SC06_018_ELF := $(ov_SC06_018_OUT).elf ov_SC06_018_MAPFILE := $(ov_SC06_018_OUT).map ov_SC06_018_LD_SCRIPT := $(ov_SC06_018_OUT).ld ov_SC06_018_SPLAT_YAML := config/splat.ov_SC06_018.yaml -ov_SC06_018_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_018_jr_8012ACE0.o,tail2.data.o,ov_SC06_018_jr_801380E0.o,tail3.data.o,ov_SC06_018_jr_8013F350.o,tail4.data.o,ov_SC06_018_jr_8013FFD8.o,tail5.data.o,ov_SC06_018_jr_8015444C.o,tail6.data.o,ov_SC06_018_jr_80154C24.o,tail7.data.o,ov_SC06_018_jr_80159C84.o,tail8.data.o,ov_SC06_018_jr_8015A3C8.o,tail9.data.o,ov_SC06_018_jr_8015AE2C.o,tail10.data.o,ov_SC06_018_jr_8015C32C.o,tail11.data.o,ov_SC06_018_jr_8016AB6C.o,tail12.data.o,ov_SC06_018_jr_801734BC.o,tail13.data.o,ov_SC06_018_jr_80178D40.o,tail14.data.o,ov_SC06_018_jr_8017A4AC.o,tail15.data.o,ov_SC06_018_jr_8017C24C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_018_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_018_jr_8012ACE0.o,tail2.data.o,ov_SC06_018_jr_801380E0.o,tail3.data.o,ov_SC06_018_jr_8013F350.o,tail4.data.o,ov_SC06_018_jr_8013FFD8.o,tail5.data.o,ov_SC06_018_jr_8015444C.o,tail6.data.o,ov_SC06_018_jr_80154C24.o,tail7.data.o,ov_SC06_018_jr_801588CC.o,tail8.data.o,ov_SC06_018_jr_80159C84.o,tail9.data.o,ov_SC06_018_jr_8015A3C8.o,tail10.data.o,ov_SC06_018_jr_8015AE2C.o,tail11.data.o,ov_SC06_018_jr_8015C32C.o,tail12.data.o,ov_SC06_018_jr_8016AB6C.o,tail13.data.o,ov_SC06_018_jr_801734BC.o,tail14.data.o,ov_SC06_018_jr_80178D40.o,tail15.data.o,ov_SC06_018_jr_8017A4AC.o,tail16.data.o,ov_SC06_018_jr_8017C24C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_018/ov_SC06_018_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_018/ov_SC06_018_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_018/ov_SC06_018_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3046,7 +3046,7 @@ ov_SC06_020_ELF := $(ov_SC06_020_OUT).elf ov_SC06_020_MAPFILE := $(ov_SC06_020_OUT).map ov_SC06_020_LD_SCRIPT := $(ov_SC06_020_OUT).ld ov_SC06_020_SPLAT_YAML := config/splat.ov_SC06_020.yaml -ov_SC06_020_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_020_jr_8012ACE0.o,tail2.data.o,ov_SC06_020_jr_801380E0.o,tail3.data.o,ov_SC06_020_jr_8013F350.o,tail4.data.o,ov_SC06_020_jr_8013FFD8.o,tail5.data.o,ov_SC06_020_jr_8015444C.o,tail6.data.o,ov_SC06_020_jr_80154C24.o,tail7.data.o,ov_SC06_020_jr_80159C84.o,tail8.data.o,ov_SC06_020_jr_8015A3C8.o,tail9.data.o,ov_SC06_020_jr_8015AE2C.o,tail10.data.o,ov_SC06_020_jr_8015C32C.o,tail11.data.o,ov_SC06_020_jr_8016AB6C.o,tail12.data.o,ov_SC06_020_jr_801734BC.o,tail13.data.o,ov_SC06_020_jr_80178D40.o,tail14.data.o,ov_SC06_020_jr_8017A4AC.o,tail15.data.o,ov_SC06_020_jr_8017C24C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_020_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_020_jr_8012ACE0.o,tail2.data.o,ov_SC06_020_jr_801380E0.o,tail3.data.o,ov_SC06_020_jr_8013F350.o,tail4.data.o,ov_SC06_020_jr_8013FFD8.o,tail5.data.o,ov_SC06_020_jr_8015444C.o,tail6.data.o,ov_SC06_020_jr_80154C24.o,tail7.data.o,ov_SC06_020_jr_801588CC.o,tail8.data.o,ov_SC06_020_jr_80159C84.o,tail9.data.o,ov_SC06_020_jr_8015A3C8.o,tail10.data.o,ov_SC06_020_jr_8015AE2C.o,tail11.data.o,ov_SC06_020_jr_8015C32C.o,tail12.data.o,ov_SC06_020_jr_8016AB6C.o,tail13.data.o,ov_SC06_020_jr_801734BC.o,tail14.data.o,ov_SC06_020_jr_80178D40.o,tail15.data.o,ov_SC06_020_jr_8017A4AC.o,tail16.data.o,ov_SC06_020_jr_8017C24C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_020/ov_SC06_020_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_020/ov_SC06_020_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_020/ov_SC06_020_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3071,7 +3071,7 @@ ov_SC06_022_ELF := $(ov_SC06_022_OUT).elf ov_SC06_022_MAPFILE := $(ov_SC06_022_OUT).map ov_SC06_022_LD_SCRIPT := $(ov_SC06_022_OUT).ld ov_SC06_022_SPLAT_YAML := config/splat.ov_SC06_022.yaml -ov_SC06_022_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_022_jr_8012ACE0.o,tail2.data.o,ov_SC06_022_jr_801380E0.o,tail3.data.o,ov_SC06_022_jr_8013F350.o,tail4.data.o,ov_SC06_022_jr_8013FFD8.o,tail5.data.o,ov_SC06_022_jr_8015444C.o,tail6.data.o,ov_SC06_022_jr_80154C24.o,tail7.data.o,ov_SC06_022_jr_80159C84.o,tail8.data.o,ov_SC06_022_jr_8015A3C8.o,tail9.data.o,ov_SC06_022_jr_8015AE2C.o,tail10.data.o,ov_SC06_022_jr_8015C32C.o,tail11.data.o,ov_SC06_022_jr_8016AB6C.o,tail12.data.o,ov_SC06_022_jr_801734BC.o,tail13.data.o,ov_SC06_022_jr_80178D40.o,tail14.data.o,ov_SC06_022_jr_8017A4AC.o,tail15.data.o,ov_SC06_022_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_022_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_022_jr_8012ACE0.o,tail2.data.o,ov_SC06_022_jr_801380E0.o,tail3.data.o,ov_SC06_022_jr_8013F350.o,tail4.data.o,ov_SC06_022_jr_8013FFD8.o,tail5.data.o,ov_SC06_022_jr_8015444C.o,tail6.data.o,ov_SC06_022_jr_80154C24.o,tail7.data.o,ov_SC06_022_jr_801588CC.o,tail8.data.o,ov_SC06_022_jr_80159C84.o,tail9.data.o,ov_SC06_022_jr_8015A3C8.o,tail10.data.o,ov_SC06_022_jr_8015AE2C.o,tail11.data.o,ov_SC06_022_jr_8015C32C.o,tail12.data.o,ov_SC06_022_jr_8016AB6C.o,tail13.data.o,ov_SC06_022_jr_801734BC.o,tail14.data.o,ov_SC06_022_jr_80178D40.o,tail15.data.o,ov_SC06_022_jr_8017A4AC.o,tail16.data.o,ov_SC06_022_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_022/ov_SC06_022_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_022/ov_SC06_022_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_022/ov_SC06_022_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3096,7 +3096,7 @@ ov_SC06_024_ELF := $(ov_SC06_024_OUT).elf ov_SC06_024_MAPFILE := $(ov_SC06_024_OUT).map ov_SC06_024_LD_SCRIPT := $(ov_SC06_024_OUT).ld ov_SC06_024_SPLAT_YAML := config/splat.ov_SC06_024.yaml -ov_SC06_024_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_024_jr_8012ACE0.o,tail2.data.o,ov_SC06_024_jr_801380E0.o,tail3.data.o,ov_SC06_024_jr_8013F350.o,tail4.data.o,ov_SC06_024_jr_8013FFD8.o,tail5.data.o,ov_SC06_024_jr_8015444C.o,tail6.data.o,ov_SC06_024_jr_80154C24.o,tail7.data.o,ov_SC06_024_jr_80159C84.o,tail8.data.o,ov_SC06_024_jr_8015A3C8.o,tail9.data.o,ov_SC06_024_jr_8015AE2C.o,tail10.data.o,ov_SC06_024_jr_8015C32C.o,tail11.data.o,ov_SC06_024_jr_8016AB6C.o,tail12.data.o,ov_SC06_024_jr_801734BC.o,tail13.data.o,ov_SC06_024_jr_80178D40.o,tail14.data.o,ov_SC06_024_jr_8017A4AC.o,tail15.data.o,ov_SC06_024_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_024_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_024_jr_8012ACE0.o,tail2.data.o,ov_SC06_024_jr_801380E0.o,tail3.data.o,ov_SC06_024_jr_8013F350.o,tail4.data.o,ov_SC06_024_jr_8013FFD8.o,tail5.data.o,ov_SC06_024_jr_8015444C.o,tail6.data.o,ov_SC06_024_jr_80154C24.o,tail7.data.o,ov_SC06_024_jr_801588CC.o,tail8.data.o,ov_SC06_024_jr_80159C84.o,tail9.data.o,ov_SC06_024_jr_8015A3C8.o,tail10.data.o,ov_SC06_024_jr_8015AE2C.o,tail11.data.o,ov_SC06_024_jr_8015C32C.o,tail12.data.o,ov_SC06_024_jr_8016AB6C.o,tail13.data.o,ov_SC06_024_jr_801734BC.o,tail14.data.o,ov_SC06_024_jr_80178D40.o,tail15.data.o,ov_SC06_024_jr_8017A4AC.o,tail16.data.o,ov_SC06_024_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_024/ov_SC06_024_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_024/ov_SC06_024_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_024/ov_SC06_024_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3121,7 +3121,7 @@ ov_SC06_025_ELF := $(ov_SC06_025_OUT).elf ov_SC06_025_MAPFILE := $(ov_SC06_025_OUT).map ov_SC06_025_LD_SCRIPT := $(ov_SC06_025_OUT).ld ov_SC06_025_SPLAT_YAML := config/splat.ov_SC06_025.yaml -ov_SC06_025_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_025_jr_8012ACE0.o,tail2.data.o,ov_SC06_025_jr_801380E0.o,tail3.data.o,ov_SC06_025_jr_8013F350.o,tail4.data.o,ov_SC06_025_jr_8013FFD8.o,tail5.data.o,ov_SC06_025_jr_8015444C.o,tail6.data.o,ov_SC06_025_jr_80154C24.o,tail7.data.o,ov_SC06_025_jr_80159C84.o,tail8.data.o,ov_SC06_025_jr_8015A3C8.o,tail9.data.o,ov_SC06_025_jr_8015AE2C.o,tail10.data.o,ov_SC06_025_jr_8015C32C.o,tail11.data.o,ov_SC06_025_jr_8016AB6C.o,tail12.data.o,ov_SC06_025_jr_801734BC.o,tail13.data.o,ov_SC06_025_jr_80178D40.o,tail14.data.o,ov_SC06_025_jr_8017A4AC.o,tail15.data.o,ov_SC06_025_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_025_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_025_jr_8012ACE0.o,tail2.data.o,ov_SC06_025_jr_801380E0.o,tail3.data.o,ov_SC06_025_jr_8013F350.o,tail4.data.o,ov_SC06_025_jr_8013FFD8.o,tail5.data.o,ov_SC06_025_jr_8015444C.o,tail6.data.o,ov_SC06_025_jr_80154C24.o,tail7.data.o,ov_SC06_025_jr_801588CC.o,tail8.data.o,ov_SC06_025_jr_80159C84.o,tail9.data.o,ov_SC06_025_jr_8015A3C8.o,tail10.data.o,ov_SC06_025_jr_8015AE2C.o,tail11.data.o,ov_SC06_025_jr_8015C32C.o,tail12.data.o,ov_SC06_025_jr_8016AB6C.o,tail13.data.o,ov_SC06_025_jr_801734BC.o,tail14.data.o,ov_SC06_025_jr_80178D40.o,tail15.data.o,ov_SC06_025_jr_8017A4AC.o,tail16.data.o,ov_SC06_025_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_025/ov_SC06_025_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_025/ov_SC06_025_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_025/ov_SC06_025_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3146,7 +3146,7 @@ ov_SC06_027_ELF := $(ov_SC06_027_OUT).elf ov_SC06_027_MAPFILE := $(ov_SC06_027_OUT).map ov_SC06_027_LD_SCRIPT := $(ov_SC06_027_OUT).ld ov_SC06_027_SPLAT_YAML := config/splat.ov_SC06_027.yaml -ov_SC06_027_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_027_jr_8012ACE0.o,tail2.data.o,ov_SC06_027_jr_801380E0.o,tail3.data.o,ov_SC06_027_jr_8013F350.o,tail4.data.o,ov_SC06_027_jr_8013FFD8.o,tail5.data.o,ov_SC06_027_jr_8015444C.o,tail6.data.o,ov_SC06_027_jr_80154C24.o,tail7.data.o,ov_SC06_027_jr_80159C84.o,tail8.data.o,ov_SC06_027_jr_8015A3C8.o,tail9.data.o,ov_SC06_027_jr_8015AE2C.o,tail10.data.o,ov_SC06_027_jr_8015C32C.o,tail11.data.o,ov_SC06_027_jr_8016AB6C.o,tail12.data.o,ov_SC06_027_jr_801734BC.o,tail13.data.o,ov_SC06_027_jr_80178D40.o,tail14.data.o,ov_SC06_027_jr_8017A4AC.o,tail15.data.o,ov_SC06_027_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_027_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_027_jr_8012ACE0.o,tail2.data.o,ov_SC06_027_jr_801380E0.o,tail3.data.o,ov_SC06_027_jr_8013F350.o,tail4.data.o,ov_SC06_027_jr_8013FFD8.o,tail5.data.o,ov_SC06_027_jr_8015444C.o,tail6.data.o,ov_SC06_027_jr_80154C24.o,tail7.data.o,ov_SC06_027_jr_801588CC.o,tail8.data.o,ov_SC06_027_jr_80159C84.o,tail9.data.o,ov_SC06_027_jr_8015A3C8.o,tail10.data.o,ov_SC06_027_jr_8015AE2C.o,tail11.data.o,ov_SC06_027_jr_8015C32C.o,tail12.data.o,ov_SC06_027_jr_8016AB6C.o,tail13.data.o,ov_SC06_027_jr_801734BC.o,tail14.data.o,ov_SC06_027_jr_80178D40.o,tail15.data.o,ov_SC06_027_jr_8017A4AC.o,tail16.data.o,ov_SC06_027_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_027/ov_SC06_027_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_027/ov_SC06_027_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_027/ov_SC06_027_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3171,7 +3171,7 @@ ov_SC06_029_ELF := $(ov_SC06_029_OUT).elf ov_SC06_029_MAPFILE := $(ov_SC06_029_OUT).map ov_SC06_029_LD_SCRIPT := $(ov_SC06_029_OUT).ld ov_SC06_029_SPLAT_YAML := config/splat.ov_SC06_029.yaml -ov_SC06_029_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_029_jr_8012ACE0.o,tail2.data.o,ov_SC06_029_jr_801380E0.o,tail3.data.o,ov_SC06_029_jr_8013F350.o,tail4.data.o,ov_SC06_029_jr_8013FFD8.o,tail5.data.o,ov_SC06_029_jr_8015444C.o,tail6.data.o,ov_SC06_029_jr_80154C24.o,tail7.data.o,ov_SC06_029_jr_80159C84.o,tail8.data.o,ov_SC06_029_jr_8015A3C8.o,tail9.data.o,ov_SC06_029_jr_8015AE2C.o,tail10.data.o,ov_SC06_029_jr_8015C32C.o,tail11.data.o,ov_SC06_029_jr_8016AB6C.o,tail12.data.o,ov_SC06_029_jr_801734BC.o,tail13.data.o,ov_SC06_029_jr_80178D40.o,tail14.data.o,ov_SC06_029_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_029_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_029_jr_8012ACE0.o,tail2.data.o,ov_SC06_029_jr_801380E0.o,tail3.data.o,ov_SC06_029_jr_8013F350.o,tail4.data.o,ov_SC06_029_jr_8013FFD8.o,tail5.data.o,ov_SC06_029_jr_8015444C.o,tail6.data.o,ov_SC06_029_jr_80154C24.o,tail7.data.o,ov_SC06_029_jr_801588CC.o,tail8.data.o,ov_SC06_029_jr_80159C84.o,tail9.data.o,ov_SC06_029_jr_8015A3C8.o,tail10.data.o,ov_SC06_029_jr_8015AE2C.o,tail11.data.o,ov_SC06_029_jr_8015C32C.o,tail12.data.o,ov_SC06_029_jr_8016AB6C.o,tail13.data.o,ov_SC06_029_jr_801734BC.o,tail14.data.o,ov_SC06_029_jr_80178D40.o,tail15.data.o,ov_SC06_029_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_029/ov_SC06_029_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_029/ov_SC06_029_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_029/ov_SC06_029_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3196,7 +3196,7 @@ ov_SC06_030_ELF := $(ov_SC06_030_OUT).elf ov_SC06_030_MAPFILE := $(ov_SC06_030_OUT).map ov_SC06_030_LD_SCRIPT := $(ov_SC06_030_OUT).ld ov_SC06_030_SPLAT_YAML := config/splat.ov_SC06_030.yaml -ov_SC06_030_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_030_jr_8012ACE0.o,tail2.data.o,ov_SC06_030_jr_801380E0.o,tail3.data.o,ov_SC06_030_jr_8013F350.o,tail4.data.o,ov_SC06_030_jr_8013FFD8.o,tail5.data.o,ov_SC06_030_jr_8015444C.o,tail6.data.o,ov_SC06_030_jr_80154C24.o,tail7.data.o,ov_SC06_030_jr_80159C84.o,tail8.data.o,ov_SC06_030_jr_8015A3C8.o,tail9.data.o,ov_SC06_030_jr_8015AE2C.o,tail10.data.o,ov_SC06_030_jr_8015C32C.o,tail11.data.o,ov_SC06_030_jr_8016AB6C.o,tail12.data.o,ov_SC06_030_jr_801734BC.o,tail13.data.o,ov_SC06_030_jr_80178D40.o,tail14.data.o,ov_SC06_030_jr_8017A4AC.o,tail15.data.o,ov_SC06_030_jr_8017C8D0.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_030_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_030_jr_8012ACE0.o,tail2.data.o,ov_SC06_030_jr_801380E0.o,tail3.data.o,ov_SC06_030_jr_8013F350.o,tail4.data.o,ov_SC06_030_jr_8013FFD8.o,tail5.data.o,ov_SC06_030_jr_8015444C.o,tail6.data.o,ov_SC06_030_jr_80154C24.o,tail7.data.o,ov_SC06_030_jr_801588CC.o,tail8.data.o,ov_SC06_030_jr_80159C84.o,tail9.data.o,ov_SC06_030_jr_8015A3C8.o,tail10.data.o,ov_SC06_030_jr_8015AE2C.o,tail11.data.o,ov_SC06_030_jr_8015C32C.o,tail12.data.o,ov_SC06_030_jr_8016AB6C.o,tail13.data.o,ov_SC06_030_jr_801734BC.o,tail14.data.o,ov_SC06_030_jr_80178D40.o,tail15.data.o,ov_SC06_030_jr_8017A4AC.o,tail16.data.o,ov_SC06_030_jr_8017C8D0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_030/ov_SC06_030_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_030/ov_SC06_030_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_030/ov_SC06_030_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3221,7 +3221,7 @@ ov_SC06_032_ELF := $(ov_SC06_032_OUT).elf ov_SC06_032_MAPFILE := $(ov_SC06_032_OUT).map ov_SC06_032_LD_SCRIPT := $(ov_SC06_032_OUT).ld ov_SC06_032_SPLAT_YAML := config/splat.ov_SC06_032.yaml -ov_SC06_032_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_032_jr_8012ACE0.o,tail2.data.o,ov_SC06_032_jr_801380E0.o,tail3.data.o,ov_SC06_032_jr_8013F350.o,tail4.data.o,ov_SC06_032_jr_8013FFD8.o,tail5.data.o,ov_SC06_032_jr_8015444C.o,tail6.data.o,ov_SC06_032_jr_80154C24.o,tail7.data.o,ov_SC06_032_jr_80159C84.o,tail8.data.o,ov_SC06_032_jr_8015A3C8.o,tail9.data.o,ov_SC06_032_jr_8015AE2C.o,tail10.data.o,ov_SC06_032_jr_8015C32C.o,tail11.data.o,ov_SC06_032_jr_8016AB6C.o,tail12.data.o,ov_SC06_032_jr_801734BC.o,tail13.data.o,ov_SC06_032_jr_80178D40.o,tail14.data.o,ov_SC06_032_jr_8017A4AC.o,tail15.data.o,ov_SC06_032_jr_8017C24C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_032_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_032_jr_8012ACE0.o,tail2.data.o,ov_SC06_032_jr_801380E0.o,tail3.data.o,ov_SC06_032_jr_8013F350.o,tail4.data.o,ov_SC06_032_jr_8013FFD8.o,tail5.data.o,ov_SC06_032_jr_8015444C.o,tail6.data.o,ov_SC06_032_jr_80154C24.o,tail7.data.o,ov_SC06_032_jr_801588CC.o,tail8.data.o,ov_SC06_032_jr_80159C84.o,tail9.data.o,ov_SC06_032_jr_8015A3C8.o,tail10.data.o,ov_SC06_032_jr_8015AE2C.o,tail11.data.o,ov_SC06_032_jr_8015C32C.o,tail12.data.o,ov_SC06_032_jr_8016AB6C.o,tail13.data.o,ov_SC06_032_jr_801734BC.o,tail14.data.o,ov_SC06_032_jr_80178D40.o,tail15.data.o,ov_SC06_032_jr_8017A4AC.o,tail16.data.o,ov_SC06_032_jr_8017C24C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_032/ov_SC06_032_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_032/ov_SC06_032_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_032/ov_SC06_032_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3246,7 +3246,7 @@ ov_SC06_033_ELF := $(ov_SC06_033_OUT).elf ov_SC06_033_MAPFILE := $(ov_SC06_033_OUT).map ov_SC06_033_LD_SCRIPT := $(ov_SC06_033_OUT).ld ov_SC06_033_SPLAT_YAML := config/splat.ov_SC06_033.yaml -ov_SC06_033_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_033_jr_8012ACE0.o,tail2.data.o,ov_SC06_033_jr_801380E0.o,tail3.data.o,ov_SC06_033_jr_8013F350.o,tail4.data.o,ov_SC06_033_jr_8013FFD8.o,tail5.data.o,ov_SC06_033_jr_8015444C.o,tail6.data.o,ov_SC06_033_jr_80154C24.o,tail7.data.o,ov_SC06_033_jr_80159C84.o,tail8.data.o,ov_SC06_033_jr_8015A3C8.o,tail9.data.o,ov_SC06_033_jr_8015AE2C.o,tail10.data.o,ov_SC06_033_jr_8015C32C.o,tail11.data.o,ov_SC06_033_jr_8016AB6C.o,tail12.data.o,ov_SC06_033_jr_801734BC.o,tail13.data.o,ov_SC06_033_jr_80178D40.o,tail14.data.o,ov_SC06_033_jr_8017A4AC.o,tail15.data.o,ov_SC06_033_jr_8017C24C.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_033_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_033_jr_8012ACE0.o,tail2.data.o,ov_SC06_033_jr_801380E0.o,tail3.data.o,ov_SC06_033_jr_8013F350.o,tail4.data.o,ov_SC06_033_jr_8013FFD8.o,tail5.data.o,ov_SC06_033_jr_8015444C.o,tail6.data.o,ov_SC06_033_jr_80154C24.o,tail7.data.o,ov_SC06_033_jr_801588CC.o,tail8.data.o,ov_SC06_033_jr_80159C84.o,tail9.data.o,ov_SC06_033_jr_8015A3C8.o,tail10.data.o,ov_SC06_033_jr_8015AE2C.o,tail11.data.o,ov_SC06_033_jr_8015C32C.o,tail12.data.o,ov_SC06_033_jr_8016AB6C.o,tail13.data.o,ov_SC06_033_jr_801734BC.o,tail14.data.o,ov_SC06_033_jr_80178D40.o,tail15.data.o,ov_SC06_033_jr_8017A4AC.o,tail16.data.o,ov_SC06_033_jr_8017C24C.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_033/ov_SC06_033_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC06_033/ov_SC06_033_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_033/ov_SC06_033_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3271,7 +3271,7 @@ ov_SC07_001_ELF := $(ov_SC07_001_OUT).elf ov_SC07_001_MAPFILE := $(ov_SC07_001_OUT).map ov_SC07_001_LD_SCRIPT := $(ov_SC07_001_OUT).ld ov_SC07_001_SPLAT_YAML := config/splat.ov_SC07_001.yaml -ov_SC07_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_001_jr_8012ACE0.o,tail2.data.o,ov_SC07_001_jr_801380E0.o,tail3.data.o,ov_SC07_001_jr_8013F350.o,tail4.data.o,ov_SC07_001_jr_8013FFD8.o,tail5.data.o,ov_SC07_001_jr_8015444C.o,tail6.data.o,ov_SC07_001_jr_80154C24.o,tail7.data.o,ov_SC07_001_jr_80159C84.o,tail8.data.o,ov_SC07_001_jr_8015A3C8.o,tail9.data.o,ov_SC07_001_jr_8015AE2C.o,tail10.data.o,ov_SC07_001_jr_8015C32C.o,tail11.data.o,ov_SC07_001_jr_8016AB6C.o,tail12.data.o,ov_SC07_001_jr_801734BC.o,tail13.data.o,ov_SC07_001_jr_80178D40.o,tail14.data.o,ov_SC07_001_jr_8017A4AC.o,tail15.data.o,ov_SC07_001_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_001_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_001_jr_8012ACE0.o,tail2.data.o,ov_SC07_001_jr_801380E0.o,tail3.data.o,ov_SC07_001_jr_8013F350.o,tail4.data.o,ov_SC07_001_jr_8013FFD8.o,tail5.data.o,ov_SC07_001_jr_8015444C.o,tail6.data.o,ov_SC07_001_jr_80154C24.o,tail7.data.o,ov_SC07_001_jr_801588CC.o,tail8.data.o,ov_SC07_001_jr_80159C84.o,tail9.data.o,ov_SC07_001_jr_8015A3C8.o,tail10.data.o,ov_SC07_001_jr_8015AE2C.o,tail11.data.o,ov_SC07_001_jr_8015C32C.o,tail12.data.o,ov_SC07_001_jr_8016AB6C.o,tail13.data.o,ov_SC07_001_jr_801734BC.o,tail14.data.o,ov_SC07_001_jr_80178D40.o,tail15.data.o,ov_SC07_001_jr_8017A4AC.o,tail16.data.o,ov_SC07_001_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_001/ov_SC07_001_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC07_001/ov_SC07_001_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_001/ov_SC07_001_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3296,7 +3296,7 @@ ov_SC07_002_ELF := $(ov_SC07_002_OUT).elf ov_SC07_002_MAPFILE := $(ov_SC07_002_OUT).map ov_SC07_002_LD_SCRIPT := $(ov_SC07_002_OUT).ld ov_SC07_002_SPLAT_YAML := config/splat.ov_SC07_002.yaml -ov_SC07_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_002_jr_8012ACE0.o,tail2.data.o,ov_SC07_002_jr_801380E0.o,tail3.data.o,ov_SC07_002_jr_8013F350.o,tail4.data.o,ov_SC07_002_jr_8013FFD8.o,tail5.data.o,ov_SC07_002_jr_8015444C.o,tail6.data.o,ov_SC07_002_jr_80154C24.o,tail7.data.o,ov_SC07_002_jr_80159C84.o,tail8.data.o,ov_SC07_002_jr_8015A3C8.o,tail9.data.o,ov_SC07_002_jr_8015AE2C.o,tail10.data.o,ov_SC07_002_jr_8015C32C.o,tail11.data.o,ov_SC07_002_jr_8016AB6C.o,tail12.data.o,ov_SC07_002_jr_801734BC.o,tail13.data.o,ov_SC07_002_jr_80178D40.o,tail14.data.o,ov_SC07_002_jr_8017A4AC.o,tail15.data.o,ov_SC07_002_jr_8017C8D0.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_002_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_002_jr_8012ACE0.o,tail2.data.o,ov_SC07_002_jr_801380E0.o,tail3.data.o,ov_SC07_002_jr_8013F350.o,tail4.data.o,ov_SC07_002_jr_8013FFD8.o,tail5.data.o,ov_SC07_002_jr_8015444C.o,tail6.data.o,ov_SC07_002_jr_80154C24.o,tail7.data.o,ov_SC07_002_jr_801588CC.o,tail8.data.o,ov_SC07_002_jr_80159C84.o,tail9.data.o,ov_SC07_002_jr_8015A3C8.o,tail10.data.o,ov_SC07_002_jr_8015AE2C.o,tail11.data.o,ov_SC07_002_jr_8015C32C.o,tail12.data.o,ov_SC07_002_jr_8016AB6C.o,tail13.data.o,ov_SC07_002_jr_801734BC.o,tail14.data.o,ov_SC07_002_jr_80178D40.o,tail15.data.o,ov_SC07_002_jr_8017A4AC.o,tail16.data.o,ov_SC07_002_jr_8017C8D0.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_002/ov_SC07_002_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC07_002/ov_SC07_002_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_002/ov_SC07_002_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3321,7 +3321,7 @@ ov_SC07_008_ELF := $(ov_SC07_008_OUT).elf ov_SC07_008_MAPFILE := $(ov_SC07_008_OUT).map ov_SC07_008_LD_SCRIPT := $(ov_SC07_008_OUT).ld ov_SC07_008_SPLAT_YAML := config/splat.ov_SC07_008.yaml -ov_SC07_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_008_jr_8012ACE0.o,tail2.data.o,ov_SC07_008_jr_801380E0.o,tail3.data.o,ov_SC07_008_jr_8013F350.o,tail4.data.o,ov_SC07_008_jr_8013FFD8.o,tail5.data.o,ov_SC07_008_jr_8015444C.o,tail6.data.o,ov_SC07_008_jr_80154C24.o,tail7.data.o,ov_SC07_008_jr_80159C84.o,tail8.data.o,ov_SC07_008_jr_8015A3C8.o,tail9.data.o,ov_SC07_008_jr_8015AE2C.o,tail10.data.o,ov_SC07_008_jr_8015C32C.o,tail11.data.o,ov_SC07_008_jr_8016AB6C.o,tail12.data.o,ov_SC07_008_jr_801734BC.o,tail13.data.o,ov_SC07_008_jr_80178D40.o,tail14.data.o,ov_SC07_008_jr_8017A4AC.o,tail15.data.o,ov_SC07_008_jr_8017BEBC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_008_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_008_jr_8012ACE0.o,tail2.data.o,ov_SC07_008_jr_801380E0.o,tail3.data.o,ov_SC07_008_jr_8013F350.o,tail4.data.o,ov_SC07_008_jr_8013FFD8.o,tail5.data.o,ov_SC07_008_jr_8015444C.o,tail6.data.o,ov_SC07_008_jr_80154C24.o,tail7.data.o,ov_SC07_008_jr_801588CC.o,tail8.data.o,ov_SC07_008_jr_80159C84.o,tail9.data.o,ov_SC07_008_jr_8015A3C8.o,tail10.data.o,ov_SC07_008_jr_8015AE2C.o,tail11.data.o,ov_SC07_008_jr_8015C32C.o,tail12.data.o,ov_SC07_008_jr_8016AB6C.o,tail13.data.o,ov_SC07_008_jr_801734BC.o,tail14.data.o,ov_SC07_008_jr_80178D40.o,tail15.data.o,ov_SC07_008_jr_8017A4AC.o,tail16.data.o,ov_SC07_008_jr_8017BEBC.o,tail17.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_008/ov_SC07_008_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC07_008/ov_SC07_008_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_008/ov_SC07_008_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3346,7 +3346,7 @@ ov_SC07_009_ELF := $(ov_SC07_009_OUT).elf ov_SC07_009_MAPFILE := $(ov_SC07_009_OUT).map ov_SC07_009_LD_SCRIPT := $(ov_SC07_009_OUT).ld ov_SC07_009_SPLAT_YAML := config/splat.ov_SC07_009.yaml -ov_SC07_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_009_jr_8012ACE0.o,tail2.data.o,ov_SC07_009_jr_801380E0.o,tail3.data.o,ov_SC07_009_jr_8013F350.o,tail4.data.o,ov_SC07_009_jr_8013FFD8.o,tail5.data.o,ov_SC07_009_jr_8015444C.o,tail6.data.o,ov_SC07_009_jr_80154C24.o,tail7.data.o,ov_SC07_009_jr_80159C84.o,tail8.data.o,ov_SC07_009_jr_8015A3C8.o,tail9.data.o,ov_SC07_009_jr_8015AE2C.o,tail10.data.o,ov_SC07_009_jr_8015C32C.o,tail11.data.o,ov_SC07_009_jr_8016AB6C.o,tail12.data.o,ov_SC07_009_jr_801734BC.o,tail13.data.o,ov_SC07_009_jr_80178D40.o,tail14.data.o,ov_SC07_009_jr_8017A4AC.o,tail15.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_009_jr_8012ACE0.o,tail2.data.o,ov_SC07_009_jr_801380E0.o,tail3.data.o,ov_SC07_009_jr_8013F350.o,tail4.data.o,ov_SC07_009_jr_8013FFD8.o,tail5.data.o,ov_SC07_009_jr_8015444C.o,tail6.data.o,ov_SC07_009_jr_80154C24.o,tail7.data.o,ov_SC07_009_jr_801588CC.o,tail8.data.o,ov_SC07_009_jr_80159C84.o,tail9.data.o,ov_SC07_009_jr_8015A3C8.o,tail10.data.o,ov_SC07_009_jr_8015AE2C.o,tail11.data.o,ov_SC07_009_jr_8015C32C.o,tail12.data.o,ov_SC07_009_jr_8016AB6C.o,tail13.data.o,ov_SC07_009_jr_801734BC.o,tail14.data.o,ov_SC07_009_jr_80178D40.o,tail15.data.o,ov_SC07_009_jr_8017A4AC.o,tail16.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_009/ov_SC07_009_jr_8012ACE0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) build/src/ov_SC07_009/ov_SC07_009_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC07_009/ov_SC07_009_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 @@ -3371,7 +3371,7 @@ ov_SC07_006_ELF := $(ov_SC07_006_OUT).elf ov_SC07_006_MAPFILE := $(ov_SC07_006_OUT).map ov_SC07_006_LD_SCRIPT := $(ov_SC07_006_OUT).ld ov_SC07_006_SPLAT_YAML := config/splat.ov_SC07_006.yaml -ov_SC07_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_006_jr_80131340.o,tail2.data.o,ov_SC07_006_jr_8013F350.o,tail3.data.o,ov_SC07_006_jr_80154C24.o,tail4.data.o,ov_SC07_006_jr_8015C32C.o,tail5.data.o,ov_SC07_006_jr_8017BEBC.o,tail6.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_006_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_006_jr_80131340.o,tail2.data.o,ov_SC07_006_jr_8013F350.o,tail3.data.o,ov_SC07_006_jr_80154C24.o,tail4.data.o,ov_SC07_006_jr_801588CC.o,tail5.data.o,ov_SC07_006_jr_8015C32C.o,tail6.data.o,ov_SC07_006_jr_8017BEBC.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_006/ov_SC07_006_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 ov_SC07_006_CHECK_SHA := config/check.ov_SC07_006.sha ov_SC07_006_SYMBOLS := config/symbols.ov_SC07_006.txt @@ -3394,7 +3394,7 @@ ov_SC07_007_ELF := $(ov_SC07_007_OUT).elf ov_SC07_007_MAPFILE := $(ov_SC07_007_OUT).map ov_SC07_007_LD_SCRIPT := $(ov_SC07_007_OUT).ld ov_SC07_007_SPLAT_YAML := config/splat.ov_SC07_007.yaml -ov_SC07_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_007_jr_80131340.o,tail2.data.o,ov_SC07_007_jr_8013F350.o,tail3.data.o,ov_SC07_007_jr_80154C24.o,tail4.data.o,ov_SC07_007_jr_8015C32C.o,tail5.data.o,ov_SC07_007_jr_8017BEBC.o,tail6.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_007_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_007_jr_80131340.o,tail2.data.o,ov_SC07_007_jr_8013F350.o,tail3.data.o,ov_SC07_007_jr_80154C24.o,tail4.data.o,ov_SC07_007_jr_801588CC.o,tail5.data.o,ov_SC07_007_jr_8015C32C.o,tail6.data.o,ov_SC07_007_jr_8017BEBC.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_007/ov_SC07_007_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 ov_SC07_007_CHECK_SHA := config/check.ov_SC07_007.sha ov_SC07_007_SYMBOLS := config/symbols.ov_SC07_007.txt @@ -3417,7 +3417,7 @@ ov_SC07_010_ELF := $(ov_SC07_010_OUT).elf ov_SC07_010_MAPFILE := $(ov_SC07_010_OUT).map ov_SC07_010_LD_SCRIPT := $(ov_SC07_010_OUT).ld ov_SC07_010_SPLAT_YAML := config/splat.ov_SC07_010.yaml -ov_SC07_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_010.o,tail2.data.o,ov_SC07_010_jr_8013F350.o,tail3.data.o,ov_SC07_010_jr_80154C24.o,tail4.data.o,ov_SC07_010_jr_8015C32C.o,tail5.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_010_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_010.o,tail2.data.o,ov_SC07_010_jr_8013F350.o,tail3.data.o,ov_SC07_010_jr_80154C24.o,tail4.data.o,ov_SC07_010_jr_801588CC.o,tail5.data.o,ov_SC07_010_jr_8015C32C.o,tail6.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve ov_SC07_010_CHECK_SHA := config/check.ov_SC07_010.sha ov_SC07_010_SYMBOLS := config/symbols.ov_SC07_010.txt ov_SC07_010_SIG := .run/sig.ov_SC07_010.jsonl @@ -3439,7 +3439,7 @@ ov_SC07_011_ELF := $(ov_SC07_011_OUT).elf ov_SC07_011_MAPFILE := $(ov_SC07_011_OUT).map ov_SC07_011_LD_SCRIPT := $(ov_SC07_011_OUT).ld ov_SC07_011_SPLAT_YAML := config/splat.ov_SC07_011.yaml -ov_SC07_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_011_jr_80131340.o,tail2.data.o,ov_SC07_011_jr_8013F350.o,tail3.data.o,ov_SC07_011_jr_80154C24.o,tail4.data.o,ov_SC07_011_jr_8015C32C.o,tail5.data.o,ov_SC07_011_jr_8017BEBC.o,tail6.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC07_011_JTBL_INTERLEAVE := --order tail.data.o,ov_SC07_011_jr_80131340.o,tail2.data.o,ov_SC07_011_jr_8013F350.o,tail3.data.o,ov_SC07_011_jr_80154C24.o,tail4.data.o,ov_SC07_011_jr_801588CC.o,tail5.data.o,ov_SC07_011_jr_8015C32C.o,tail6.data.o,ov_SC07_011_jr_8017BEBC.o,tail7.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC07_011/ov_SC07_011_jr_8013F350.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 ov_SC07_011_CHECK_SHA := config/check.ov_SC07_011.sha ov_SC07_011_SYMBOLS := config/symbols.ov_SC07_011.txt diff --git a/config/splat.ov_SC01_000.yaml b/config/splat.ov_SC01_000.yaml index 6d6ad63ec..1380f5b1a 100644 --- a/config/splat.ov_SC01_000.yaml +++ b/config/splat.ov_SC01_000.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC01_000_after] - [0x2c2f4, c, ov_SC01_000_jr_8015444C] - [0x2cacc, c, ov_SC01_000_jr_80154C24] + - [0x30774, c, ov_SC01_000_jr_801588CC] - [0x31b2c, c, ov_SC01_000_jr_80159C84] - [0x32270, c, ov_SC01_000_jr_8015A3C8] - [0x32cd4, c, ov_SC01_000_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x7baec, data, tail6] - [0x7bb5c, .rodata, ov_SC01_000_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7bb80, data, tail7] + - [0x7bba0, .rodata, ov_SC01_000_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7bbc4, data, tail8] - [0x7bc48, .rodata, ov_SC01_000_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7bc7c, data, tail8] + - [0x7bc7c, data, tail9] - [0x7bc80, .rodata, ov_SC01_000_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7bc9c, data, tail9] + - [0x7bc9c, data, tail10] - [0x7bca0, .rodata, ov_SC01_000_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7bcbc, data, tail10] + - [0x7bcbc, data, tail11] - [0x7bce0, .rodata, ov_SC01_000_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7bcfc, data, tail11] + - [0x7bcfc, data, tail12] - [0x7bd14, .rodata, ov_SC01_000_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7bd34, data, tail12] + - [0x7bd34, data, tail13] - [0x7bdb4, .rodata, ov_SC01_000_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7bdc8, data, tail13] + - [0x7bdc8, data, tail14] - [0x7bf70, .rodata, ov_SC01_000_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7c0e8, data, tail14] + - [0x7c0e8, data, tail15] - [0x7c178, .rodata, ov_SC01_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7c204, data, tail15] + - [0x7c204, data, tail16] - [0x7c21c, .rodata, ov_SC01_000_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7c23c, data, tail16] + - [0x7c23c, data, tail17] - [0x7D78C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7D78F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC01_001.yaml b/config/splat.ov_SC01_001.yaml index 3a1ff3e1c..fa3620121 100644 --- a/config/splat.ov_SC01_001.yaml +++ b/config/splat.ov_SC01_001.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC01_001_after] - [0x2c2f4, c, ov_SC01_001_jr_8015444C] - [0x2cacc, c, ov_SC01_001_jr_80154C24] + - [0x30774, c, ov_SC01_001_jr_801588CC] - [0x31b2c, c, ov_SC01_001_jr_80159C84] - [0x32270, c, ov_SC01_001_jr_8015A3C8] - [0x32cd4, c, ov_SC01_001_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xc3bc4, data, tail6] - [0xc3c34, .rodata, ov_SC01_001_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc3c58, data, tail7] + - [0xc3c78, .rodata, ov_SC01_001_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc3c9c, data, tail8] - [0xc3d20, .rodata, ov_SC01_001_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc3d54, data, tail8] + - [0xc3d54, data, tail9] - [0xc3d58, .rodata, ov_SC01_001_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc3d74, data, tail9] + - [0xc3d74, data, tail10] - [0xc3d78, .rodata, ov_SC01_001_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc3d94, data, tail10] + - [0xc3d94, data, tail11] - [0xc3db8, .rodata, ov_SC01_001_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc3dd4, data, tail11] + - [0xc3dd4, data, tail12] - [0xc3dec, .rodata, ov_SC01_001_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc3e0c, data, tail12] + - [0xc3e0c, data, tail13] - [0xc3e8c, .rodata, ov_SC01_001_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc3ea0, data, tail13] + - [0xc3ea0, data, tail14] - [0xc4048, .rodata, ov_SC01_001_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc41c0, data, tail14] + - [0xc41c0, data, tail15] - [0xc4250, .rodata, ov_SC01_001_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc42dc, data, tail15] + - [0xc42dc, data, tail16] - [0xc42f4, .rodata, ov_SC01_001_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc4314, data, tail16] + - [0xc4314, data, tail17] - [0xCB06C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xCB06F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC01_004.yaml b/config/splat.ov_SC01_004.yaml index 8f365358e..bef7cf1fd 100644 --- a/config/splat.ov_SC01_004.yaml +++ b/config/splat.ov_SC01_004.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC01_004_after] - [0x2c2f4, c, ov_SC01_004_jr_8015444C] - [0x2cacc, c, ov_SC01_004_jr_80154C24] + - [0x30774, c, ov_SC01_004_jr_801588CC] - [0x31b2c, c, ov_SC01_004_jr_80159C84] - [0x32270, c, ov_SC01_004_jr_8015A3C8] - [0x32cd4, c, ov_SC01_004_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x65fa4, data, tail6] - [0x66014, .rodata, ov_SC01_004_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x66038, data, tail7] + - [0x66058, .rodata, ov_SC01_004_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6607c, data, tail8] - [0x66100, .rodata, ov_SC01_004_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66134, data, tail8] + - [0x66134, data, tail9] - [0x66138, .rodata, ov_SC01_004_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66154, data, tail9] + - [0x66154, data, tail10] - [0x66158, .rodata, ov_SC01_004_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66174, data, tail10] + - [0x66174, data, tail11] - [0x66198, .rodata, ov_SC01_004_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x661b4, data, tail11] + - [0x661b4, data, tail12] - [0x661cc, .rodata, ov_SC01_004_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x661ec, data, tail12] + - [0x661ec, data, tail13] - [0x6626c, .rodata, ov_SC01_004_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66280, data, tail13] + - [0x66280, data, tail14] - [0x66428, .rodata, ov_SC01_004_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x665a0, data, tail14] + - [0x665a0, data, tail15] - [0x66630, .rodata, ov_SC01_004_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x666bc, data, tail15] + - [0x666bc, data, tail16] - [0x666d4, .rodata, ov_SC01_004_jr_8017BE9C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x666f4, data, tail16] + - [0x666f4, data, tail17] - [0x68274, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x68277] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC01_005.yaml b/config/splat.ov_SC01_005.yaml index 9d3195b06..4ab773780 100644 --- a/config/splat.ov_SC01_005.yaml +++ b/config/splat.ov_SC01_005.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC01_005_after] - [0x2c2f4, c, ov_SC01_005_jr_8015444C] - [0x2cacc, c, ov_SC01_005_jr_80154C24] + - [0x30774, c, ov_SC01_005_jr_801588CC] - [0x31b2c, c, ov_SC01_005_jr_80159C84] - [0x32270, c, ov_SC01_005_jr_8015A3C8] - [0x32cd4, c, ov_SC01_005_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xa3704, data, tail6] - [0xa3774, .rodata, ov_SC01_005_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa3798, data, tail7] + - [0xa37b8, .rodata, ov_SC01_005_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa37dc, data, tail8] - [0xa3860, .rodata, ov_SC01_005_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa3894, data, tail8] + - [0xa3894, data, tail9] - [0xa3898, .rodata, ov_SC01_005_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa38b4, data, tail9] + - [0xa38b4, data, tail10] - [0xa38b8, .rodata, ov_SC01_005_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa38d4, data, tail10] + - [0xa38d4, data, tail11] - [0xa38f8, .rodata, ov_SC01_005_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa3914, data, tail11] + - [0xa3914, data, tail12] - [0xa392c, .rodata, ov_SC01_005_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa394c, data, tail12] + - [0xa394c, data, tail13] - [0xa39cc, .rodata, ov_SC01_005_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa39e0, data, tail13] + - [0xa39e0, data, tail14] - [0xa3b88, .rodata, ov_SC01_005_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa3d00, data, tail14] + - [0xa3d00, data, tail15] - [0xa3d90, .rodata, ov_SC01_005_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa3e1c, data, tail15] + - [0xa3e1c, data, tail16] - [0xa3e34, .rodata, ov_SC01_005_jr_8017C340] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa3e54, data, tail16] + - [0xa3e54, data, tail17] - [0xA5F08, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA5F09] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC01_006.yaml b/config/splat.ov_SC01_006.yaml index 87ca8ddd2..fde0a0419 100644 --- a/config/splat.ov_SC01_006.yaml +++ b/config/splat.ov_SC01_006.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC01_006_after] - [0x2c2f4, c, ov_SC01_006_jr_8015444C] - [0x2cacc, c, ov_SC01_006_jr_80154C24] + - [0x30774, c, ov_SC01_006_jr_801588CC] - [0x31b2c, c, ov_SC01_006_jr_80159C84] - [0x32270, c, ov_SC01_006_jr_8015A3C8] - [0x32cd4, c, ov_SC01_006_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xa3704, data, tail6] - [0xa3774, .rodata, ov_SC01_006_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa3798, data, tail7] + - [0xa37b8, .rodata, ov_SC01_006_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa37dc, data, tail8] - [0xa3860, .rodata, ov_SC01_006_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa3894, data, tail8] + - [0xa3894, data, tail9] - [0xa3898, .rodata, ov_SC01_006_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa38b4, data, tail9] + - [0xa38b4, data, tail10] - [0xa38b8, .rodata, ov_SC01_006_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa38d4, data, tail10] + - [0xa38d4, data, tail11] - [0xa38f8, .rodata, ov_SC01_006_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa3914, data, tail11] + - [0xa3914, data, tail12] - [0xa392c, .rodata, ov_SC01_006_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa394c, data, tail12] + - [0xa394c, data, tail13] - [0xa39cc, .rodata, ov_SC01_006_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa39e0, data, tail13] + - [0xa39e0, data, tail14] - [0xa3b88, .rodata, ov_SC01_006_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa3d00, data, tail14] + - [0xa3d00, data, tail15] - [0xa3d90, .rodata, ov_SC01_006_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa3e1c, data, tail15] + - [0xa3e1c, data, tail16] - [0xa3e34, .rodata, ov_SC01_006_jr_8017C340] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa3e54, data, tail16] + - [0xa3e54, data, tail17] - [0xA5F08, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA5F09] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC01_008.yaml b/config/splat.ov_SC01_008.yaml index 95bc21146..35052fbf5 100644 --- a/config/splat.ov_SC01_008.yaml +++ b/config/splat.ov_SC01_008.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC01_008_after] - [0x2c2f4, c, ov_SC01_008_jr_8015444C] - [0x2cacc, c, ov_SC01_008_jr_80154C24] + - [0x30774, c, ov_SC01_008_jr_801588CC] - [0x31b2c, c, ov_SC01_008_jr_80159C84] - [0x32270, c, ov_SC01_008_jr_8015A3C8] - [0x32cd4, c, ov_SC01_008_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x791b4, data, tail6] - [0x79224, .rodata, ov_SC01_008_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x79248, data, tail7] + - [0x79268, .rodata, ov_SC01_008_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7928c, data, tail8] - [0x79310, .rodata, ov_SC01_008_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x79344, data, tail8] + - [0x79344, data, tail9] - [0x79348, .rodata, ov_SC01_008_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x79364, data, tail9] + - [0x79364, data, tail10] - [0x79368, .rodata, ov_SC01_008_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x79384, data, tail10] + - [0x79384, data, tail11] - [0x793a8, .rodata, ov_SC01_008_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x793c4, data, tail11] + - [0x793c4, data, tail12] - [0x793dc, .rodata, ov_SC01_008_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x793fc, data, tail12] + - [0x793fc, data, tail13] - [0x7947c, .rodata, ov_SC01_008_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x79490, data, tail13] + - [0x79490, data, tail14] - [0x79638, .rodata, ov_SC01_008_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x797b0, data, tail14] + - [0x797b0, data, tail15] - [0x79840, .rodata, ov_SC01_008_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x798cc, data, tail15] + - [0x798cc, data, tail16] - [0x798e4, .rodata, ov_SC01_008_jr_8017BE9C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x79904, data, tail16] + - [0x79904, data, tail17] - [0x7B484, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7B487] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC01_009.yaml b/config/splat.ov_SC01_009.yaml index c5796fbdc..82cd412a7 100644 --- a/config/splat.ov_SC01_009.yaml +++ b/config/splat.ov_SC01_009.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC01_009_after] - [0x2c2f4, c, ov_SC01_009_jr_8015444C] - [0x2cacc, c, ov_SC01_009_jr_80154C24] + - [0x30774, c, ov_SC01_009_jr_801588CC] - [0x31b2c, c, ov_SC01_009_jr_80159C84] - [0x32270, c, ov_SC01_009_jr_8015A3C8] - [0x32cd4, c, ov_SC01_009_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xc8f78, data, tail6] - [0xc8fe8, .rodata, ov_SC01_009_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc900c, data, tail7] + - [0xc902c, .rodata, ov_SC01_009_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc9050, data, tail8] - [0xc90d4, .rodata, ov_SC01_009_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc9108, data, tail8] + - [0xc9108, data, tail9] - [0xc910c, .rodata, ov_SC01_009_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc9128, data, tail9] + - [0xc9128, data, tail10] - [0xc912c, .rodata, ov_SC01_009_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc9148, data, tail10] + - [0xc9148, data, tail11] - [0xc916c, .rodata, ov_SC01_009_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc9188, data, tail11] + - [0xc9188, data, tail12] - [0xc91a0, .rodata, ov_SC01_009_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc91c0, data, tail12] + - [0xc91c0, data, tail13] - [0xc9240, .rodata, ov_SC01_009_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc9254, data, tail13] + - [0xc9254, data, tail14] - [0xc93fc, .rodata, ov_SC01_009_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc9574, data, tail14] + - [0xc9574, data, tail15] - [0xc9604, .rodata, ov_SC01_009_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc9690, data, tail15] + - [0xc9690, data, tail16] - [0xc96a8, .rodata, ov_SC01_009_jr_8017BE9C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc96c8, data, tail16] + - [0xc96c8, data, tail17] - [0xCB304, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xCB307] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC01_074.yaml b/config/splat.ov_SC01_074.yaml index 1a71b9ce9..197c291b2 100644 --- a/config/splat.ov_SC01_074.yaml +++ b/config/splat.ov_SC01_074.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC01_074_after] - [0x2c2f4, c, ov_SC01_074_jr_8015444C] - [0x2cacc, c, ov_SC01_074_jr_80154C24] + - [0x30774, c, ov_SC01_074_jr_801588CC] - [0x31b2c, c, ov_SC01_074_jr_80159C84] - [0x32270, c, ov_SC01_074_jr_8015A3C8] - [0x32cd4, c, ov_SC01_074_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x72008, data, tail6] - [0x72078, .rodata, ov_SC01_074_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7209c, data, tail7] + - [0x720bc, .rodata, ov_SC01_074_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x720e0, data, tail8] - [0x72164, .rodata, ov_SC01_074_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72198, data, tail8] + - [0x72198, data, tail9] - [0x7219c, .rodata, ov_SC01_074_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x721b8, data, tail9] + - [0x721b8, data, tail10] - [0x721bc, .rodata, ov_SC01_074_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x721d8, data, tail10] + - [0x721d8, data, tail11] - [0x721fc, .rodata, ov_SC01_074_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72218, data, tail11] + - [0x72218, data, tail12] - [0x72230, .rodata, ov_SC01_074_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72250, data, tail12] + - [0x72250, data, tail13] - [0x722d0, .rodata, ov_SC01_074_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x722e4, data, tail13] + - [0x722e4, data, tail14] - [0x7248c, .rodata, ov_SC01_074_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72604, data, tail14] + - [0x72604, data, tail15] - [0x72694, .rodata, ov_SC01_074_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72720, data, tail15] + - [0x72720, data, tail16] - [0x72738, .rodata, ov_SC01_074_jr_8017BE9C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72758, data, tail16] + - [0x72758, data, tail17] - [0x73C14, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x73C17] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC01_077.yaml b/config/splat.ov_SC01_077.yaml index 296576ac4..dbcf07f48 100644 --- a/config/splat.ov_SC01_077.yaml +++ b/config/splat.ov_SC01_077.yaml @@ -69,6 +69,7 @@ segments: - [0x1d64c, c, ov_SC01_077_after] - [0x2c2f4, c, ov_SC01_077_jr_8015444C] - [0x2cacc, c, ov_SC01_077_jr_80154C24] + - [0x30774, c, ov_SC01_077_jr_801588CC] - [0x31b2c, c, ov_SC01_077_jr_80159C84] - [0x32270, c, ov_SC01_077_jr_8015A3C8] - [0x32cd4, c, ov_SC01_077_jr_8015AE2C] @@ -102,24 +103,26 @@ segments: - [0xb0848, data, tail6] - [0xb08b8, .rodata, ov_SC01_077_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb08dc, data, tail7] + - [0xb08fc, .rodata, ov_SC01_077_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb0920, data, tail8] - [0xb09a4, .rodata, ov_SC01_077_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb09d8, data, tail8] + - [0xb09d8, data, tail9] - [0xb09dc, .rodata, ov_SC01_077_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb09f8, data, tail9] + - [0xb09f8, data, tail10] - [0xb09fc, .rodata, ov_SC01_077_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb0a18, data, tail10] + - [0xb0a18, data, tail11] - [0xb0a3c, .rodata, ov_SC01_077_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb0a58, data, tail11] + - [0xb0a58, data, tail12] - [0xb0a70, .rodata, ov_SC01_077_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb0a90, data, tail12] + - [0xb0a90, data, tail13] - [0xb0b10, .rodata, ov_SC01_077_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb0b24, data, tail13] + - [0xb0b24, data, tail14] - [0xb0ccc, .rodata, ov_SC01_077_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb0e44, data, tail14] + - [0xb0e44, data, tail15] - [0xb0ed4, .rodata, ov_SC01_077_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb0f60, data, tail15] + - [0xb0f60, data, tail16] - [0xb1148, .rodata, ov_SC01_077_jr_80182268] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb1168, data, tail16] + - [0xb1168, data, tail17] - [0xB29D4, bin, trailing] # final 3 bytes (EOF 0xB29D7 not word-aligned; spimdisasm drops # a trailing partial word and a <4-byte `data` carve emits nothing, # so use `bin` = raw .incbin, byte-exact). Word-aligned overlays omit this. diff --git a/config/splat.ov_SC01_080.yaml b/config/splat.ov_SC01_080.yaml index 5ca7ac41e..4a301e4f1 100644 --- a/config/splat.ov_SC01_080.yaml +++ b/config/splat.ov_SC01_080.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC01_080_after] - [0x2c2f4, c, ov_SC01_080_jr_8015444C] - [0x2cacc, c, ov_SC01_080_jr_80154C24] + - [0x30774, c, ov_SC01_080_jr_801588CC] - [0x31b2c, c, ov_SC01_080_jr_80159C84] - [0x32270, c, ov_SC01_080_jr_8015A3C8] - [0x32cd4, c, ov_SC01_080_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x9be28, data, tail6] - [0x9be98, .rodata, ov_SC01_080_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9bebc, data, tail7] + - [0x9bedc, .rodata, ov_SC01_080_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9bf00, data, tail8] - [0x9bf84, .rodata, ov_SC01_080_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9bfb8, data, tail8] + - [0x9bfb8, data, tail9] - [0x9bfbc, .rodata, ov_SC01_080_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9bfd8, data, tail9] + - [0x9bfd8, data, tail10] - [0x9bfdc, .rodata, ov_SC01_080_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9bff8, data, tail10] + - [0x9bff8, data, tail11] - [0x9c01c, .rodata, ov_SC01_080_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c038, data, tail11] + - [0x9c038, data, tail12] - [0x9c050, .rodata, ov_SC01_080_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c070, data, tail12] + - [0x9c070, data, tail13] - [0x9c0f0, .rodata, ov_SC01_080_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c104, data, tail13] + - [0x9c104, data, tail14] - [0x9c2ac, .rodata, ov_SC01_080_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c424, data, tail14] + - [0x9c424, data, tail15] - [0x9c4b4, .rodata, ov_SC01_080_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c540, data, tail15] + - [0x9c540, data, tail16] - [0x9FDF4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9FDF7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC01_084.yaml b/config/splat.ov_SC01_084.yaml index e58fcdbcf..7e79c042b 100644 --- a/config/splat.ov_SC01_084.yaml +++ b/config/splat.ov_SC01_084.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC01_084_after] - [0x2c2f4, c, ov_SC01_084_jr_8015444C] - [0x2cacc, c, ov_SC01_084_jr_80154C24] + - [0x30774, c, ov_SC01_084_jr_801588CC] - [0x31b2c, c, ov_SC01_084_jr_80159C84] - [0x32270, c, ov_SC01_084_jr_8015A3C8] - [0x32cd4, c, ov_SC01_084_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x9d7f8, data, tail6] - [0x9d868, .rodata, ov_SC01_084_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9d88c, data, tail7] + - [0x9d8ac, .rodata, ov_SC01_084_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9d8d0, data, tail8] - [0x9d954, .rodata, ov_SC01_084_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d988, data, tail8] + - [0x9d988, data, tail9] - [0x9d98c, .rodata, ov_SC01_084_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d9a8, data, tail9] + - [0x9d9a8, data, tail10] - [0x9d9ac, .rodata, ov_SC01_084_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d9c8, data, tail10] + - [0x9d9c8, data, tail11] - [0x9d9ec, .rodata, ov_SC01_084_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9da08, data, tail11] + - [0x9da08, data, tail12] - [0x9da20, .rodata, ov_SC01_084_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9da40, data, tail12] + - [0x9da40, data, tail13] - [0x9dac0, .rodata, ov_SC01_084_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9dad4, data, tail13] + - [0x9dad4, data, tail14] - [0x9dc7c, .rodata, ov_SC01_084_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ddf4, data, tail14] + - [0x9ddf4, data, tail15] - [0x9de84, .rodata, ov_SC01_084_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9df10, data, tail15] + - [0x9df10, data, tail16] - [0x9df28, .rodata, ov_SC01_084_jr_8017CA80] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9df48, data, tail16] + - [0x9df48, data, tail17] - [0x9FA9C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9FA9F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_000.yaml b/config/splat.ov_SC02_000.yaml index 431c7b515..8d3b7f55f 100644 --- a/config/splat.ov_SC02_000.yaml +++ b/config/splat.ov_SC02_000.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_000_after] - [0x2c2f4, c, ov_SC02_000_jr_8015444C] - [0x2cacc, c, ov_SC02_000_jr_80154C24] + - [0x30774, c, ov_SC02_000_jr_801588CC] - [0x31b2c, c, ov_SC02_000_jr_80159C84] - [0x32270, c, ov_SC02_000_jr_8015A3C8] - [0x32cd4, c, ov_SC02_000_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xbe04c, data, tail6] - [0xbe0bc, .rodata, ov_SC02_000_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbe0e0, data, tail7] + - [0xbe100, .rodata, ov_SC02_000_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbe124, data, tail8] - [0xbe1a8, .rodata, ov_SC02_000_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe1dc, data, tail8] + - [0xbe1dc, data, tail9] - [0xbe1e0, .rodata, ov_SC02_000_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe1fc, data, tail9] + - [0xbe1fc, data, tail10] - [0xbe200, .rodata, ov_SC02_000_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe21c, data, tail10] + - [0xbe21c, data, tail11] - [0xbe240, .rodata, ov_SC02_000_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe25c, data, tail11] + - [0xbe25c, data, tail12] - [0xbe274, .rodata, ov_SC02_000_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe294, data, tail12] + - [0xbe294, data, tail13] - [0xbe314, .rodata, ov_SC02_000_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe328, data, tail13] + - [0xbe328, data, tail14] - [0xbe4d0, .rodata, ov_SC02_000_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe648, data, tail14] + - [0xbe648, data, tail15] - [0xbe6d8, .rodata, ov_SC02_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe764, data, tail15] + - [0xbe764, data, tail16] - [0xbe944, .rodata, ov_SC02_000_jr_8017FCB0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe964, data, tail16] + - [0xbe964, data, tail17] - [0xC070C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC070F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_003.yaml b/config/splat.ov_SC02_003.yaml index 03fd36e66..c2392f3a2 100644 --- a/config/splat.ov_SC02_003.yaml +++ b/config/splat.ov_SC02_003.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_003_after] - [0x2c2f4, c, ov_SC02_003_jr_8015444C] - [0x2cacc, c, ov_SC02_003_jr_80154C24] + - [0x30774, c, ov_SC02_003_jr_801588CC] - [0x31b2c, c, ov_SC02_003_jr_80159C84] - [0x32270, c, ov_SC02_003_jr_8015A3C8] - [0x32cd4, c, ov_SC02_003_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xbe04c, data, tail6] - [0xbe0bc, .rodata, ov_SC02_003_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbe0e0, data, tail7] + - [0xbe100, .rodata, ov_SC02_003_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbe124, data, tail8] - [0xbe1a8, .rodata, ov_SC02_003_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe1dc, data, tail8] + - [0xbe1dc, data, tail9] - [0xbe1e0, .rodata, ov_SC02_003_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe1fc, data, tail9] + - [0xbe1fc, data, tail10] - [0xbe200, .rodata, ov_SC02_003_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe21c, data, tail10] + - [0xbe21c, data, tail11] - [0xbe240, .rodata, ov_SC02_003_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe25c, data, tail11] + - [0xbe25c, data, tail12] - [0xbe274, .rodata, ov_SC02_003_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe294, data, tail12] + - [0xbe294, data, tail13] - [0xbe314, .rodata, ov_SC02_003_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe328, data, tail13] + - [0xbe328, data, tail14] - [0xbe4d0, .rodata, ov_SC02_003_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe648, data, tail14] + - [0xbe648, data, tail15] - [0xbe6d8, .rodata, ov_SC02_003_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe764, data, tail15] + - [0xbe764, data, tail16] - [0xbe944, .rodata, ov_SC02_003_jr_8017FCB0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe964, data, tail16] + - [0xbe964, data, tail17] - [0xC070C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC070F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_004.yaml b/config/splat.ov_SC02_004.yaml index 48a960dbd..94d2f43c0 100644 --- a/config/splat.ov_SC02_004.yaml +++ b/config/splat.ov_SC02_004.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_004_after] - [0x2c2f4, c, ov_SC02_004_jr_8015444C] - [0x2cacc, c, ov_SC02_004_jr_80154C24] + - [0x30774, c, ov_SC02_004_jr_801588CC] - [0x31b2c, c, ov_SC02_004_jr_80159C84] - [0x32270, c, ov_SC02_004_jr_8015A3C8] - [0x32cd4, c, ov_SC02_004_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x6c65c, data, tail6] - [0x6c6cc, .rodata, ov_SC02_004_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6c6f0, data, tail7] + - [0x6c710, .rodata, ov_SC02_004_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6c734, data, tail8] - [0x6c7b8, .rodata, ov_SC02_004_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6c7ec, data, tail8] + - [0x6c7ec, data, tail9] - [0x6c7f0, .rodata, ov_SC02_004_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6c80c, data, tail9] + - [0x6c80c, data, tail10] - [0x6c810, .rodata, ov_SC02_004_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6c82c, data, tail10] + - [0x6c82c, data, tail11] - [0x6c850, .rodata, ov_SC02_004_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6c86c, data, tail11] + - [0x6c86c, data, tail12] - [0x6c884, .rodata, ov_SC02_004_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6c8a4, data, tail12] + - [0x6c8a4, data, tail13] - [0x6c924, .rodata, ov_SC02_004_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6c938, data, tail13] + - [0x6c938, data, tail14] - [0x6cae0, .rodata, ov_SC02_004_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6cc58, data, tail14] + - [0x6cc58, data, tail15] - [0x6cce8, .rodata, ov_SC02_004_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6cd74, data, tail15] + - [0x6cd74, data, tail16] - [0x6E26C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6E26F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_005.yaml b/config/splat.ov_SC02_005.yaml index ed469b472..962661cac 100644 --- a/config/splat.ov_SC02_005.yaml +++ b/config/splat.ov_SC02_005.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_005_after] - [0x2c2f4, c, ov_SC02_005_jr_8015444C] - [0x2cacc, c, ov_SC02_005_jr_80154C24] + - [0x30774, c, ov_SC02_005_jr_801588CC] - [0x31b2c, c, ov_SC02_005_jr_80159C84] - [0x32270, c, ov_SC02_005_jr_8015A3C8] - [0x32cd4, c, ov_SC02_005_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0xba390, data, tail6] - [0xba400, .rodata, ov_SC02_005_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xba424, data, tail7] + - [0xba444, .rodata, ov_SC02_005_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xba468, data, tail8] - [0xba4ec, .rodata, ov_SC02_005_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xba520, data, tail8] + - [0xba520, data, tail9] - [0xba524, .rodata, ov_SC02_005_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xba540, data, tail9] + - [0xba540, data, tail10] - [0xba544, .rodata, ov_SC02_005_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xba560, data, tail10] + - [0xba560, data, tail11] - [0xba584, .rodata, ov_SC02_005_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xba5a0, data, tail11] + - [0xba5a0, data, tail12] - [0xba5b8, .rodata, ov_SC02_005_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xba5d8, data, tail12] + - [0xba5d8, data, tail13] - [0xba658, .rodata, ov_SC02_005_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xba66c, data, tail13] + - [0xba66c, data, tail14] - [0xba814, .rodata, ov_SC02_005_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xba98c, data, tail14] + - [0xba98c, data, tail15] - [0xbaa1c, .rodata, ov_SC02_005_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbaaa8, data, tail15] + - [0xbaaa8, data, tail16] - [0xBCB00, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBCB01] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_011.yaml b/config/splat.ov_SC02_011.yaml index 804194bae..9bd176334 100644 --- a/config/splat.ov_SC02_011.yaml +++ b/config/splat.ov_SC02_011.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_011_after] - [0x2c2f4, c, ov_SC02_011_jr_8015444C] - [0x2cacc, c, ov_SC02_011_jr_80154C24] + - [0x30774, c, ov_SC02_011_jr_801588CC] - [0x31b2c, c, ov_SC02_011_jr_80159C84] - [0x32270, c, ov_SC02_011_jr_8015A3C8] - [0x32cd4, c, ov_SC02_011_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0xc14ec, data, tail6] - [0xc155c, .rodata, ov_SC02_011_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc1580, data, tail7] + - [0xc15a0, .rodata, ov_SC02_011_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc15c4, data, tail8] - [0xc1648, .rodata, ov_SC02_011_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc167c, data, tail8] + - [0xc167c, data, tail9] - [0xc1680, .rodata, ov_SC02_011_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc169c, data, tail9] + - [0xc169c, data, tail10] - [0xc16a0, .rodata, ov_SC02_011_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc16bc, data, tail10] + - [0xc16bc, data, tail11] - [0xc16e0, .rodata, ov_SC02_011_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc16fc, data, tail11] + - [0xc16fc, data, tail12] - [0xc1714, .rodata, ov_SC02_011_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc1734, data, tail12] + - [0xc1734, data, tail13] - [0xc17b4, .rodata, ov_SC02_011_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc17c8, data, tail13] + - [0xc17c8, data, tail14] - [0xc1970, .rodata, ov_SC02_011_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc1ae8, data, tail14] + - [0xc1ae8, data, tail15] - [0xc1b78, .rodata, ov_SC02_011_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc1c04, data, tail15] + - [0xc1c04, data, tail16] - [0xC3924, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC3927] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_015.yaml b/config/splat.ov_SC02_015.yaml index ec158ce63..fc2a0bf8a 100644 --- a/config/splat.ov_SC02_015.yaml +++ b/config/splat.ov_SC02_015.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_015_after] - [0x2c2f4, c, ov_SC02_015_jr_8015444C] - [0x2cacc, c, ov_SC02_015_jr_80154C24] + - [0x30774, c, ov_SC02_015_jr_801588CC] - [0x31b2c, c, ov_SC02_015_jr_80159C84] - [0x32270, c, ov_SC02_015_jr_8015A3C8] - [0x32cd4, c, ov_SC02_015_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x66744, data, tail6] - [0x667b4, .rodata, ov_SC02_015_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x667d8, data, tail7] + - [0x667f8, .rodata, ov_SC02_015_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6681c, data, tail8] - [0x668a0, .rodata, ov_SC02_015_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x668d4, data, tail8] + - [0x668d4, data, tail9] - [0x668d8, .rodata, ov_SC02_015_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x668f4, data, tail9] + - [0x668f4, data, tail10] - [0x668f8, .rodata, ov_SC02_015_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66914, data, tail10] + - [0x66914, data, tail11] - [0x66938, .rodata, ov_SC02_015_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66954, data, tail11] + - [0x66954, data, tail12] - [0x6696c, .rodata, ov_SC02_015_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6698c, data, tail12] + - [0x6698c, data, tail13] - [0x66a0c, .rodata, ov_SC02_015_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66a20, data, tail13] + - [0x66a20, data, tail14] - [0x66bc8, .rodata, ov_SC02_015_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66d40, data, tail14] + - [0x66d40, data, tail15] - [0x66dd0, .rodata, ov_SC02_015_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66e5c, data, tail15] + - [0x66e5c, data, tail16] - [0x68544, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x68547] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_016.yaml b/config/splat.ov_SC02_016.yaml index 697ff7faa..fe48edaab 100644 --- a/config/splat.ov_SC02_016.yaml +++ b/config/splat.ov_SC02_016.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_016_after] - [0x2c2f4, c, ov_SC02_016_jr_8015444C] - [0x2cacc, c, ov_SC02_016_jr_80154C24] + - [0x30774, c, ov_SC02_016_jr_801588CC] - [0x31b2c, c, ov_SC02_016_jr_80159C84] - [0x32270, c, ov_SC02_016_jr_8015A3C8] - [0x32cd4, c, ov_SC02_016_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x8a324, data, tail6] - [0x8a394, .rodata, ov_SC02_016_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8a3b8, data, tail7] + - [0x8a3d8, .rodata, ov_SC02_016_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8a3fc, data, tail8] - [0x8a480, .rodata, ov_SC02_016_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8a4b4, data, tail8] + - [0x8a4b4, data, tail9] - [0x8a4b8, .rodata, ov_SC02_016_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8a4d4, data, tail9] + - [0x8a4d4, data, tail10] - [0x8a4d8, .rodata, ov_SC02_016_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8a4f4, data, tail10] + - [0x8a4f4, data, tail11] - [0x8a518, .rodata, ov_SC02_016_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8a534, data, tail11] + - [0x8a534, data, tail12] - [0x8a54c, .rodata, ov_SC02_016_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8a56c, data, tail12] + - [0x8a56c, data, tail13] - [0x8a5ec, .rodata, ov_SC02_016_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8a600, data, tail13] + - [0x8a600, data, tail14] - [0x8a7a8, .rodata, ov_SC02_016_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8a920, data, tail14] + - [0x8a920, data, tail15] - [0x8a9b0, .rodata, ov_SC02_016_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8aa3c, data, tail15] + - [0x8aa3c, data, tail16] - [0x8aa54, .rodata, ov_SC02_016_jr_8017DC70] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8aa74, data, tail16] + - [0x8aa74, data, tail17] - [0x8C97C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8C97F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_017.yaml b/config/splat.ov_SC02_017.yaml index 32d452d50..d1ec15fe7 100644 --- a/config/splat.ov_SC02_017.yaml +++ b/config/splat.ov_SC02_017.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_017_after] - [0x2c2f4, c, ov_SC02_017_jr_8015444C] - [0x2cacc, c, ov_SC02_017_jr_80154C24] + - [0x30774, c, ov_SC02_017_jr_801588CC] - [0x31b2c, c, ov_SC02_017_jr_80159C84] - [0x32270, c, ov_SC02_017_jr_8015A3C8] - [0x32cd4, c, ov_SC02_017_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xc5b44, data, tail6] - [0xc5bb4, .rodata, ov_SC02_017_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc5bd8, data, tail7] + - [0xc5bf8, .rodata, ov_SC02_017_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc5c1c, data, tail8] - [0xc5ca0, .rodata, ov_SC02_017_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc5cd4, data, tail8] + - [0xc5cd4, data, tail9] - [0xc5cd8, .rodata, ov_SC02_017_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc5cf4, data, tail9] + - [0xc5cf4, data, tail10] - [0xc5cf8, .rodata, ov_SC02_017_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc5d14, data, tail10] + - [0xc5d14, data, tail11] - [0xc5d38, .rodata, ov_SC02_017_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc5d54, data, tail11] + - [0xc5d54, data, tail12] - [0xc5d6c, .rodata, ov_SC02_017_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc5d8c, data, tail12] + - [0xc5d8c, data, tail13] - [0xc5e0c, .rodata, ov_SC02_017_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc5e20, data, tail13] + - [0xc5e20, data, tail14] - [0xc5fc8, .rodata, ov_SC02_017_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc6140, data, tail14] + - [0xc6140, data, tail15] - [0xc61d0, .rodata, ov_SC02_017_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc625c, data, tail15] + - [0xc625c, data, tail16] - [0xc6274, .rodata, ov_SC02_017_jr_8017DF34] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc6294, data, tail16] + - [0xc6294, data, tail17] - [0xC7BDC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC7BDF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_021.yaml b/config/splat.ov_SC02_021.yaml index afedbeb44..0fe2acc42 100644 --- a/config/splat.ov_SC02_021.yaml +++ b/config/splat.ov_SC02_021.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_021_after] - [0x2c2f4, c, ov_SC02_021_jr_8015444C] - [0x2cacc, c, ov_SC02_021_jr_80154C24] + - [0x30774, c, ov_SC02_021_jr_801588CC] - [0x31b2c, c, ov_SC02_021_jr_80159C84] - [0x32270, c, ov_SC02_021_jr_8015A3C8] - [0x32cd4, c, ov_SC02_021_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x690c0, data, tail6] - [0x69130, .rodata, ov_SC02_021_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x69154, data, tail7] + - [0x69174, .rodata, ov_SC02_021_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x69198, data, tail8] - [0x6921c, .rodata, ov_SC02_021_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x69250, data, tail8] + - [0x69250, data, tail9] - [0x69254, .rodata, ov_SC02_021_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x69270, data, tail9] + - [0x69270, data, tail10] - [0x69274, .rodata, ov_SC02_021_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x69290, data, tail10] + - [0x69290, data, tail11] - [0x692b4, .rodata, ov_SC02_021_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x692d0, data, tail11] + - [0x692d0, data, tail12] - [0x692e8, .rodata, ov_SC02_021_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x69308, data, tail12] + - [0x69308, data, tail13] - [0x69388, .rodata, ov_SC02_021_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6939c, data, tail13] + - [0x6939c, data, tail14] - [0x69544, .rodata, ov_SC02_021_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x696bc, data, tail14] + - [0x696bc, data, tail15] - [0x6974c, .rodata, ov_SC02_021_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x697d8, data, tail15] + - [0x697d8, data, tail16] - [0x697f0, .rodata, ov_SC02_021_jr_8017C294] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x69810, data, tail16] + - [0x69810, data, tail17] - [0x6B744, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6B747] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_026.yaml b/config/splat.ov_SC02_026.yaml index e352296d4..64eccb14b 100644 --- a/config/splat.ov_SC02_026.yaml +++ b/config/splat.ov_SC02_026.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_026_after] - [0x2c2f4, c, ov_SC02_026_jr_8015444C] - [0x2cacc, c, ov_SC02_026_jr_80154C24] + - [0x30774, c, ov_SC02_026_jr_801588CC] - [0x31b2c, c, ov_SC02_026_jr_80159C84] - [0x32270, c, ov_SC02_026_jr_8015A3C8] - [0x32cd4, c, ov_SC02_026_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xa64f4, data, tail6] - [0xa6564, .rodata, ov_SC02_026_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa6588, data, tail7] + - [0xa65a8, .rodata, ov_SC02_026_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa65cc, data, tail8] - [0xa6650, .rodata, ov_SC02_026_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6684, data, tail8] + - [0xa6684, data, tail9] - [0xa6688, .rodata, ov_SC02_026_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa66a4, data, tail9] + - [0xa66a4, data, tail10] - [0xa66a8, .rodata, ov_SC02_026_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa66c4, data, tail10] + - [0xa66c4, data, tail11] - [0xa66e8, .rodata, ov_SC02_026_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6704, data, tail11] + - [0xa6704, data, tail12] - [0xa671c, .rodata, ov_SC02_026_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa673c, data, tail12] + - [0xa673c, data, tail13] - [0xa67bc, .rodata, ov_SC02_026_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa67d0, data, tail13] + - [0xa67d0, data, tail14] - [0xa6978, .rodata, ov_SC02_026_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6af0, data, tail14] + - [0xa6af0, data, tail15] - [0xa6b80, .rodata, ov_SC02_026_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6c0c, data, tail15] + - [0xa6c0c, data, tail16] - [0xa6c24, .rodata, ov_SC02_026_jr_8017C180] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6c44, data, tail16] + - [0xa6c44, data, tail17] - [0xA8164, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA8167] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_027.yaml b/config/splat.ov_SC02_027.yaml index 91c76be00..1660cf518 100644 --- a/config/splat.ov_SC02_027.yaml +++ b/config/splat.ov_SC02_027.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_027_after] - [0x2c2f4, c, ov_SC02_027_jr_8015444C] - [0x2cacc, c, ov_SC02_027_jr_80154C24] + - [0x30774, c, ov_SC02_027_jr_801588CC] - [0x31b2c, c, ov_SC02_027_jr_80159C84] - [0x32270, c, ov_SC02_027_jr_8015A3C8] - [0x32cd4, c, ov_SC02_027_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xb0260, data, tail6] - [0xb02d0, .rodata, ov_SC02_027_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb02f4, data, tail7] + - [0xb0314, .rodata, ov_SC02_027_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb0338, data, tail8] - [0xb03bc, .rodata, ov_SC02_027_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb03f0, data, tail8] + - [0xb03f0, data, tail9] - [0xb03f4, .rodata, ov_SC02_027_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb0410, data, tail9] + - [0xb0410, data, tail10] - [0xb0414, .rodata, ov_SC02_027_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb0430, data, tail10] + - [0xb0430, data, tail11] - [0xb0454, .rodata, ov_SC02_027_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb0470, data, tail11] + - [0xb0470, data, tail12] - [0xb0488, .rodata, ov_SC02_027_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb04a8, data, tail12] + - [0xb04a8, data, tail13] - [0xb0528, .rodata, ov_SC02_027_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb053c, data, tail13] + - [0xb053c, data, tail14] - [0xb06e4, .rodata, ov_SC02_027_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb085c, data, tail14] + - [0xb085c, data, tail15] - [0xb08ec, .rodata, ov_SC02_027_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb0978, data, tail15] + - [0xb0978, data, tail16] - [0xb0990, .rodata, ov_SC02_027_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb09b0, data, tail16] + - [0xb09b0, data, tail17] - [0xB28E4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xB28E7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_028.yaml b/config/splat.ov_SC02_028.yaml index deb7c7507..f1fc8f01c 100644 --- a/config/splat.ov_SC02_028.yaml +++ b/config/splat.ov_SC02_028.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_028_after] - [0x2c2f4, c, ov_SC02_028_jr_8015444C] - [0x2cacc, c, ov_SC02_028_jr_80154C24] + - [0x30774, c, ov_SC02_028_jr_801588CC] - [0x31b2c, c, ov_SC02_028_jr_80159C84] - [0x32270, c, ov_SC02_028_jr_8015A3C8] - [0x32cd4, c, ov_SC02_028_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xa91e4, data, tail6] - [0xa9254, .rodata, ov_SC02_028_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa9278, data, tail7] + - [0xa9298, .rodata, ov_SC02_028_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa92bc, data, tail8] - [0xa9340, .rodata, ov_SC02_028_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa9374, data, tail8] + - [0xa9374, data, tail9] - [0xa9378, .rodata, ov_SC02_028_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa9394, data, tail9] + - [0xa9394, data, tail10] - [0xa9398, .rodata, ov_SC02_028_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa93b4, data, tail10] + - [0xa93b4, data, tail11] - [0xa93d8, .rodata, ov_SC02_028_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa93f4, data, tail11] + - [0xa93f4, data, tail12] - [0xa940c, .rodata, ov_SC02_028_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa942c, data, tail12] + - [0xa942c, data, tail13] - [0xa94ac, .rodata, ov_SC02_028_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa94c0, data, tail13] + - [0xa94c0, data, tail14] - [0xa9668, .rodata, ov_SC02_028_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa97e0, data, tail14] + - [0xa97e0, data, tail15] - [0xa9870, .rodata, ov_SC02_028_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa98fc, data, tail15] + - [0xa98fc, data, tail16] - [0xa9914, .rodata, ov_SC02_028_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa9934, data, tail16] + - [0xa9934, data, tail17] - [0xAB4E4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xAB4E7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_031.yaml b/config/splat.ov_SC02_031.yaml index f823b88b0..7a3bdb705 100644 --- a/config/splat.ov_SC02_031.yaml +++ b/config/splat.ov_SC02_031.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_031_after] - [0x2c2f4, c, ov_SC02_031_jr_8015444C] - [0x2cacc, c, ov_SC02_031_jr_80154C24] + - [0x30774, c, ov_SC02_031_jr_801588CC] - [0x31b2c, c, ov_SC02_031_jr_80159C84] - [0x32270, c, ov_SC02_031_jr_8015A3C8] - [0x32cd4, c, ov_SC02_031_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x8d9e0, data, tail6] - [0x8da50, .rodata, ov_SC02_031_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8da74, data, tail7] + - [0x8da94, .rodata, ov_SC02_031_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8dab8, data, tail8] - [0x8db3c, .rodata, ov_SC02_031_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8db70, data, tail8] + - [0x8db70, data, tail9] - [0x8db74, .rodata, ov_SC02_031_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8db90, data, tail9] + - [0x8db90, data, tail10] - [0x8db94, .rodata, ov_SC02_031_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8dbb0, data, tail10] + - [0x8dbb0, data, tail11] - [0x8dbd4, .rodata, ov_SC02_031_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8dbf0, data, tail11] + - [0x8dbf0, data, tail12] - [0x8dc08, .rodata, ov_SC02_031_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8dc28, data, tail12] + - [0x8dc28, data, tail13] - [0x8dca8, .rodata, ov_SC02_031_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8dcbc, data, tail13] + - [0x8dcbc, data, tail14] - [0x8de64, .rodata, ov_SC02_031_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8dfdc, data, tail14] + - [0x8dfdc, data, tail15] - [0x8e06c, .rodata, ov_SC02_031_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8e0f8, data, tail15] + - [0x8e0f8, data, tail16] - [0x8F9B4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8F9B7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_035.yaml b/config/splat.ov_SC02_035.yaml index 9c5c84e7a..5dbbf2513 100644 --- a/config/splat.ov_SC02_035.yaml +++ b/config/splat.ov_SC02_035.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_035_after] - [0x2c2f4, c, ov_SC02_035_jr_8015444C] - [0x2cacc, c, ov_SC02_035_jr_80154C24] + - [0x30774, c, ov_SC02_035_jr_801588CC] - [0x31b2c, c, ov_SC02_035_jr_80159C84] - [0x32270, c, ov_SC02_035_jr_8015A3C8] - [0x32cd4, c, ov_SC02_035_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x94ca8, data, tail6] - [0x94d18, .rodata, ov_SC02_035_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x94d3c, data, tail7] + - [0x94d5c, .rodata, ov_SC02_035_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x94d80, data, tail8] - [0x94e04, .rodata, ov_SC02_035_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x94e38, data, tail8] + - [0x94e38, data, tail9] - [0x94e3c, .rodata, ov_SC02_035_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x94e58, data, tail9] + - [0x94e58, data, tail10] - [0x94e5c, .rodata, ov_SC02_035_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x94e78, data, tail10] + - [0x94e78, data, tail11] - [0x94e9c, .rodata, ov_SC02_035_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x94eb8, data, tail11] + - [0x94eb8, data, tail12] - [0x94ed0, .rodata, ov_SC02_035_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x94ef0, data, tail12] + - [0x94ef0, data, tail13] - [0x94f70, .rodata, ov_SC02_035_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x94f84, data, tail13] + - [0x94f84, data, tail14] - [0x9512c, .rodata, ov_SC02_035_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x952a4, data, tail14] + - [0x952a4, data, tail15] - [0x95334, .rodata, ov_SC02_035_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x953c0, data, tail15] + - [0x953c0, data, tail16] - [0x953d8, .rodata, ov_SC02_035_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x953f8, data, tail16] + - [0x953f8, data, tail17] - [0x968EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x968EF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_039.yaml b/config/splat.ov_SC02_039.yaml index be64f467a..40e58c22a 100644 --- a/config/splat.ov_SC02_039.yaml +++ b/config/splat.ov_SC02_039.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_039_after] - [0x2c2f4, c, ov_SC02_039_jr_8015444C] - [0x2cacc, c, ov_SC02_039_jr_80154C24] + - [0x30774, c, ov_SC02_039_jr_801588CC] - [0x31b2c, c, ov_SC02_039_jr_80159C84] - [0x32270, c, ov_SC02_039_jr_8015A3C8] - [0x32cd4, c, ov_SC02_039_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x77094, data, tail6] - [0x77104, .rodata, ov_SC02_039_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x77128, data, tail7] + - [0x77148, .rodata, ov_SC02_039_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7716c, data, tail8] - [0x771f0, .rodata, ov_SC02_039_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77224, data, tail8] + - [0x77224, data, tail9] - [0x77228, .rodata, ov_SC02_039_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77244, data, tail9] + - [0x77244, data, tail10] - [0x77248, .rodata, ov_SC02_039_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77264, data, tail10] + - [0x77264, data, tail11] - [0x77288, .rodata, ov_SC02_039_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x772a4, data, tail11] + - [0x772a4, data, tail12] - [0x772bc, .rodata, ov_SC02_039_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x772dc, data, tail12] + - [0x772dc, data, tail13] - [0x7735c, .rodata, ov_SC02_039_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77370, data, tail13] + - [0x77370, data, tail14] - [0x77518, .rodata, ov_SC02_039_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77690, data, tail14] + - [0x77690, data, tail15] - [0x77720, .rodata, ov_SC02_039_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x777ac, data, tail15] + - [0x777ac, data, tail16] - [0x777c4, .rodata, ov_SC02_039_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x777e4, data, tail16] + - [0x777e4, data, tail17] - [0x78CA4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x78CA7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC02_041.yaml b/config/splat.ov_SC02_041.yaml index aacfc32f8..3067300b8 100644 --- a/config/splat.ov_SC02_041.yaml +++ b/config/splat.ov_SC02_041.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC02_041_after] - [0x2c2f4, c, ov_SC02_041_jr_8015444C] - [0x2cacc, c, ov_SC02_041_jr_80154C24] + - [0x30774, c, ov_SC02_041_jr_801588CC] - [0x31b2c, c, ov_SC02_041_jr_80159C84] - [0x32270, c, ov_SC02_041_jr_8015A3C8] - [0x32cd4, c, ov_SC02_041_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x8f400, data, tail6] - [0x8f470, .rodata, ov_SC02_041_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8f494, data, tail7] + - [0x8f4b4, .rodata, ov_SC02_041_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8f4d8, data, tail8] - [0x8f55c, .rodata, ov_SC02_041_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8f590, data, tail8] + - [0x8f590, data, tail9] - [0x8f594, .rodata, ov_SC02_041_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8f5b0, data, tail9] + - [0x8f5b0, data, tail10] - [0x8f5b4, .rodata, ov_SC02_041_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8f5d0, data, tail10] + - [0x8f5d0, data, tail11] - [0x8f5f4, .rodata, ov_SC02_041_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8f610, data, tail11] + - [0x8f610, data, tail12] - [0x8f628, .rodata, ov_SC02_041_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8f648, data, tail12] + - [0x8f648, data, tail13] - [0x8f6c8, .rodata, ov_SC02_041_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8f6dc, data, tail13] + - [0x8f6dc, data, tail14] - [0x8f884, .rodata, ov_SC02_041_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8f9fc, data, tail14] + - [0x8f9fc, data, tail15] - [0x8fa8c, .rodata, ov_SC02_041_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fb18, data, tail15] + - [0x8fb18, data, tail16] - [0x8fb30, .rodata, ov_SC02_041_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fb50, data, tail16] + - [0x8fb50, data, tail17] - [0x9157C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9157F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_001.yaml b/config/splat.ov_SC03_001.yaml index 4acac59b3..b5a753425 100644 --- a/config/splat.ov_SC03_001.yaml +++ b/config/splat.ov_SC03_001.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_001_after] - [0x2c2f4, c, ov_SC03_001_jr_8015444C] - [0x2cacc, c, ov_SC03_001_jr_80154C24] + - [0x30774, c, ov_SC03_001_jr_801588CC] - [0x31b2c, c, ov_SC03_001_jr_80159C84] - [0x32270, c, ov_SC03_001_jr_8015A3C8] - [0x32cd4, c, ov_SC03_001_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0xc4520, data, tail6] - [0xc4590, .rodata, ov_SC03_001_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc45b4, data, tail7] + - [0xc45d4, .rodata, ov_SC03_001_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc45f8, data, tail8] - [0xc467c, .rodata, ov_SC03_001_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc46b0, data, tail8] + - [0xc46b0, data, tail9] - [0xc46b4, .rodata, ov_SC03_001_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc46d0, data, tail9] + - [0xc46d0, data, tail10] - [0xc46d4, .rodata, ov_SC03_001_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc46f0, data, tail10] + - [0xc46f0, data, tail11] - [0xc4714, .rodata, ov_SC03_001_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc4730, data, tail11] + - [0xc4730, data, tail12] - [0xc4748, .rodata, ov_SC03_001_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc4768, data, tail12] + - [0xc4768, data, tail13] - [0xc47e8, .rodata, ov_SC03_001_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc47fc, data, tail13] + - [0xc47fc, data, tail14] - [0xc49a4, .rodata, ov_SC03_001_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc4b1c, data, tail14] + - [0xc4b1c, data, tail15] - [0xc4bac, .rodata, ov_SC03_001_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc4c38, data, tail15] + - [0xc4c38, data, tail16] - [0xC730C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC730F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_002.yaml b/config/splat.ov_SC03_002.yaml index 43699c300..5dce8615b 100644 --- a/config/splat.ov_SC03_002.yaml +++ b/config/splat.ov_SC03_002.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_002_after] - [0x2c2f4, c, ov_SC03_002_jr_8015444C] - [0x2cacc, c, ov_SC03_002_jr_80154C24] + - [0x30774, c, ov_SC03_002_jr_801588CC] - [0x31b2c, c, ov_SC03_002_jr_80159C84] - [0x32270, c, ov_SC03_002_jr_8015A3C8] - [0x32cd4, c, ov_SC03_002_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xa1a7c, data, tail6] - [0xa1aec, .rodata, ov_SC03_002_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa1b10, data, tail7] + - [0xa1b30, .rodata, ov_SC03_002_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa1b54, data, tail8] - [0xa1bd8, .rodata, ov_SC03_002_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa1c0c, data, tail8] + - [0xa1c0c, data, tail9] - [0xa1c10, .rodata, ov_SC03_002_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa1c2c, data, tail9] + - [0xa1c2c, data, tail10] - [0xa1c30, .rodata, ov_SC03_002_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa1c4c, data, tail10] + - [0xa1c4c, data, tail11] - [0xa1c70, .rodata, ov_SC03_002_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa1c8c, data, tail11] + - [0xa1c8c, data, tail12] - [0xa1ca4, .rodata, ov_SC03_002_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa1cc4, data, tail12] + - [0xa1cc4, data, tail13] - [0xa1d44, .rodata, ov_SC03_002_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa1d58, data, tail13] + - [0xa1d58, data, tail14] - [0xa1f00, .rodata, ov_SC03_002_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2078, data, tail14] + - [0xa2078, data, tail15] - [0xa2108, .rodata, ov_SC03_002_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2194, data, tail15] + - [0xa2194, data, tail16] - [0xa21ac, .rodata, ov_SC03_002_jr_8017D604] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa21cc, data, tail16] + - [0xa21cc, data, tail17] - [0xA39F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA39F7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_003.yaml b/config/splat.ov_SC03_003.yaml index 36b214018..2dddd38d4 100644 --- a/config/splat.ov_SC03_003.yaml +++ b/config/splat.ov_SC03_003.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_003_after] - [0x2c2f4, c, ov_SC03_003_jr_8015444C] - [0x2cacc, c, ov_SC03_003_jr_80154C24] + - [0x30774, c, ov_SC03_003_jr_801588CC] - [0x31b2c, c, ov_SC03_003_jr_80159C84] - [0x32270, c, ov_SC03_003_jr_8015A3C8] - [0x32cd4, c, ov_SC03_003_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x65dfc, data, tail6] - [0x65e6c, .rodata, ov_SC03_003_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x65e90, data, tail7] + - [0x65eb0, .rodata, ov_SC03_003_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x65ed4, data, tail8] - [0x65f58, .rodata, ov_SC03_003_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65f8c, data, tail8] + - [0x65f8c, data, tail9] - [0x65f90, .rodata, ov_SC03_003_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65fac, data, tail9] + - [0x65fac, data, tail10] - [0x65fb0, .rodata, ov_SC03_003_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65fcc, data, tail10] + - [0x65fcc, data, tail11] - [0x65ff0, .rodata, ov_SC03_003_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6600c, data, tail11] + - [0x6600c, data, tail12] - [0x66024, .rodata, ov_SC03_003_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66044, data, tail12] + - [0x66044, data, tail13] - [0x660c4, .rodata, ov_SC03_003_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x660d8, data, tail13] + - [0x660d8, data, tail14] - [0x66280, .rodata, ov_SC03_003_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x663f8, data, tail14] + - [0x663f8, data, tail15] - [0x66488, .rodata, ov_SC03_003_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66514, data, tail15] + - [0x66514, data, tail16] - [0x67A24, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x67A25] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_006.yaml b/config/splat.ov_SC03_006.yaml index 74cc376a4..ccc6ce637 100644 --- a/config/splat.ov_SC03_006.yaml +++ b/config/splat.ov_SC03_006.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_006_after] - [0x2c2f4, c, ov_SC03_006_jr_8015444C] - [0x2cacc, c, ov_SC03_006_jr_80154C24] + - [0x30774, c, ov_SC03_006_jr_801588CC] - [0x31b2c, c, ov_SC03_006_jr_80159C84] - [0x32270, c, ov_SC03_006_jr_8015A3C8] - [0x32cd4, c, ov_SC03_006_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0xcd6b8, data, tail6] - [0xcd728, .rodata, ov_SC03_006_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xcd74c, data, tail7] + - [0xcd76c, .rodata, ov_SC03_006_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xcd790, data, tail8] - [0xcd814, .rodata, ov_SC03_006_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xcd848, data, tail8] + - [0xcd848, data, tail9] - [0xcd84c, .rodata, ov_SC03_006_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xcd868, data, tail9] + - [0xcd868, data, tail10] - [0xcd86c, .rodata, ov_SC03_006_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xcd888, data, tail10] + - [0xcd888, data, tail11] - [0xcd8ac, .rodata, ov_SC03_006_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xcd8c8, data, tail11] + - [0xcd8c8, data, tail12] - [0xcd8e0, .rodata, ov_SC03_006_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xcd900, data, tail12] + - [0xcd900, data, tail13] - [0xcd980, .rodata, ov_SC03_006_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xcd994, data, tail13] + - [0xcd994, data, tail14] - [0xcdb3c, .rodata, ov_SC03_006_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xcdcb4, data, tail14] + - [0xcdcb4, data, tail15] - [0xcdd44, .rodata, ov_SC03_006_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xcddd0, data, tail15] + - [0xcddd0, data, tail16] - [0xCF75C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xCF75F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_007.yaml b/config/splat.ov_SC03_007.yaml index e0724351c..0376748a1 100644 --- a/config/splat.ov_SC03_007.yaml +++ b/config/splat.ov_SC03_007.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_007_after] - [0x2c2f4, c, ov_SC03_007_jr_8015444C] - [0x2cacc, c, ov_SC03_007_jr_80154C24] + - [0x30774, c, ov_SC03_007_jr_801588CC] - [0x31b2c, c, ov_SC03_007_jr_80159C84] - [0x32270, c, ov_SC03_007_jr_8015A3C8] - [0x32cd4, c, ov_SC03_007_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0xc0040, data, tail6] - [0xc00b0, .rodata, ov_SC03_007_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc00d4, data, tail7] + - [0xc00f4, .rodata, ov_SC03_007_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc0118, data, tail8] - [0xc019c, .rodata, ov_SC03_007_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc01d0, data, tail8] + - [0xc01d0, data, tail9] - [0xc01d4, .rodata, ov_SC03_007_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc01f0, data, tail9] + - [0xc01f0, data, tail10] - [0xc01f4, .rodata, ov_SC03_007_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0210, data, tail10] + - [0xc0210, data, tail11] - [0xc0234, .rodata, ov_SC03_007_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0250, data, tail11] + - [0xc0250, data, tail12] - [0xc0268, .rodata, ov_SC03_007_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0288, data, tail12] + - [0xc0288, data, tail13] - [0xc0308, .rodata, ov_SC03_007_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc031c, data, tail13] + - [0xc031c, data, tail14] - [0xc04c4, .rodata, ov_SC03_007_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc063c, data, tail14] + - [0xc063c, data, tail15] - [0xc06cc, .rodata, ov_SC03_007_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0758, data, tail15] + - [0xc0758, data, tail16] - [0xC316C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC316F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_010.yaml b/config/splat.ov_SC03_010.yaml index 0c14ba03f..4404c6f6c 100644 --- a/config/splat.ov_SC03_010.yaml +++ b/config/splat.ov_SC03_010.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_010_after] - [0x2c2f4, c, ov_SC03_010_jr_8015444C] - [0x2cacc, c, ov_SC03_010_jr_80154C24] + - [0x30774, c, ov_SC03_010_jr_801588CC] - [0x31b2c, c, ov_SC03_010_jr_80159C84] - [0x32270, c, ov_SC03_010_jr_8015A3C8] - [0x32cd4, c, ov_SC03_010_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x7631c, data, tail6] - [0x7638c, .rodata, ov_SC03_010_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x763b0, data, tail7] + - [0x763d0, .rodata, ov_SC03_010_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x763f4, data, tail8] - [0x76478, .rodata, ov_SC03_010_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x764ac, data, tail8] + - [0x764ac, data, tail9] - [0x764b0, .rodata, ov_SC03_010_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x764cc, data, tail9] + - [0x764cc, data, tail10] - [0x764d0, .rodata, ov_SC03_010_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x764ec, data, tail10] + - [0x764ec, data, tail11] - [0x76510, .rodata, ov_SC03_010_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7652c, data, tail11] + - [0x7652c, data, tail12] - [0x76544, .rodata, ov_SC03_010_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x76564, data, tail12] + - [0x76564, data, tail13] - [0x765e4, .rodata, ov_SC03_010_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x765f8, data, tail13] + - [0x765f8, data, tail14] - [0x767a0, .rodata, ov_SC03_010_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x76918, data, tail14] + - [0x76918, data, tail15] - [0x769a8, .rodata, ov_SC03_010_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x76a34, data, tail15] + - [0x76a34, data, tail16] - [0x78074, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x78077] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_011.yaml b/config/splat.ov_SC03_011.yaml index 6953dd709..082669b4d 100644 --- a/config/splat.ov_SC03_011.yaml +++ b/config/splat.ov_SC03_011.yaml @@ -101,6 +101,7 @@ segments: - [0x1d64c, c, ov_SC03_011_after] - [0x2c2f4, c, ov_SC03_011_jr_8015444C] - [0x2cacc, c, ov_SC03_011_jr_80154C24] + - [0x30774, c, ov_SC03_011_jr_801588CC] - [0x31b2c, c, ov_SC03_011_jr_80159C84] - [0x32270, c, ov_SC03_011_jr_8015A3C8] - [0x32cd4, c, ov_SC03_011_jr_8015AE2C] @@ -121,24 +122,26 @@ segments: - [0x7858c, data, tail5] - [0x785fc, .rodata, ov_SC03_011_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x78620, data, tail6] + - [0x78640, .rodata, ov_SC03_011_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x78664, data, tail7] - [0x786e8, .rodata, ov_SC03_011_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7871c, data, tail7] + - [0x7871c, data, tail8] - [0x78720, .rodata, ov_SC03_011_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7873c, data, tail8] + - [0x7873c, data, tail9] - [0x78740, .rodata, ov_SC03_011_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7875c, data, tail9] + - [0x7875c, data, tail10] - [0x78780, .rodata, ov_SC03_011_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7879c, data, tail10] + - [0x7879c, data, tail11] - [0x787b4, .rodata, ov_SC03_011_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x787d4, data, tail11] + - [0x787d4, data, tail12] - [0x78854, .rodata, ov_SC03_011_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x78868, data, tail12] + - [0x78868, data, tail13] - [0x78a10, .rodata, ov_SC03_011_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x78b88, data, tail13] + - [0x78b88, data, tail14] - [0x78c18, .rodata, ov_SC03_011_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x78ca4, data, tail14] + - [0x78ca4, data, tail15] - [0x78cbc, .rodata, ov_SC03_011_jr_8017C730] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x78cdc, data, tail15] + - [0x78cdc, data, tail16] - [0x7A2A8, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7A2AB] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_012.yaml b/config/splat.ov_SC03_012.yaml index 920143ff1..4d8cd7e2b 100644 --- a/config/splat.ov_SC03_012.yaml +++ b/config/splat.ov_SC03_012.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_012_after] - [0x2c2f4, c, ov_SC03_012_jr_8015444C] - [0x2cacc, c, ov_SC03_012_jr_80154C24] + - [0x30774, c, ov_SC03_012_jr_801588CC] - [0x31b2c, c, ov_SC03_012_jr_80159C84] - [0x32270, c, ov_SC03_012_jr_8015A3C8] - [0x32cd4, c, ov_SC03_012_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x6b3e8, data, tail6] - [0x6b458, .rodata, ov_SC03_012_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6b47c, data, tail7] + - [0x6b49c, .rodata, ov_SC03_012_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6b4c0, data, tail8] - [0x6b544, .rodata, ov_SC03_012_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b578, data, tail8] + - [0x6b578, data, tail9] - [0x6b57c, .rodata, ov_SC03_012_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b598, data, tail9] + - [0x6b598, data, tail10] - [0x6b59c, .rodata, ov_SC03_012_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b5b8, data, tail10] + - [0x6b5b8, data, tail11] - [0x6b5dc, .rodata, ov_SC03_012_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b5f8, data, tail11] + - [0x6b5f8, data, tail12] - [0x6b610, .rodata, ov_SC03_012_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b630, data, tail12] + - [0x6b630, data, tail13] - [0x6b6b0, .rodata, ov_SC03_012_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b6c4, data, tail13] + - [0x6b6c4, data, tail14] - [0x6b86c, .rodata, ov_SC03_012_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b9e4, data, tail14] + - [0x6b9e4, data, tail15] - [0x6ba74, .rodata, ov_SC03_012_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6bb00, data, tail15] + - [0x6bb00, data, tail16] - [0x6D004, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6D007] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_013.yaml b/config/splat.ov_SC03_013.yaml index 020345c35..2ab951600 100644 --- a/config/splat.ov_SC03_013.yaml +++ b/config/splat.ov_SC03_013.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_013_after] - [0x2c2f4, c, ov_SC03_013_jr_8015444C] - [0x2cacc, c, ov_SC03_013_jr_80154C24] + - [0x30774, c, ov_SC03_013_jr_801588CC] - [0x31b2c, c, ov_SC03_013_jr_80159C84] - [0x32270, c, ov_SC03_013_jr_8015A3C8] - [0x32cd4, c, ov_SC03_013_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x83680, data, tail6] - [0x836f0, .rodata, ov_SC03_013_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x83714, data, tail7] + - [0x83734, .rodata, ov_SC03_013_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x83758, data, tail8] - [0x837dc, .rodata, ov_SC03_013_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x83810, data, tail8] + - [0x83810, data, tail9] - [0x83814, .rodata, ov_SC03_013_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x83830, data, tail9] + - [0x83830, data, tail10] - [0x83834, .rodata, ov_SC03_013_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x83850, data, tail10] + - [0x83850, data, tail11] - [0x83874, .rodata, ov_SC03_013_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x83890, data, tail11] + - [0x83890, data, tail12] - [0x838a8, .rodata, ov_SC03_013_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x838c8, data, tail12] + - [0x838c8, data, tail13] - [0x83948, .rodata, ov_SC03_013_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8395c, data, tail13] + - [0x8395c, data, tail14] - [0x83b04, .rodata, ov_SC03_013_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x83c7c, data, tail14] + - [0x83c7c, data, tail15] - [0x83d0c, .rodata, ov_SC03_013_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x83d98, data, tail15] + - [0x83d98, data, tail16] - [0x853FC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x853FF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_014.yaml b/config/splat.ov_SC03_014.yaml index bbb09b5d4..08cc5e6d6 100644 --- a/config/splat.ov_SC03_014.yaml +++ b/config/splat.ov_SC03_014.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_014_after] - [0x2c2f4, c, ov_SC03_014_jr_8015444C] - [0x2cacc, c, ov_SC03_014_jr_80154C24] + - [0x30774, c, ov_SC03_014_jr_801588CC] - [0x31b2c, c, ov_SC03_014_jr_80159C84] - [0x32270, c, ov_SC03_014_jr_8015A3C8] - [0x32cd4, c, ov_SC03_014_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xc0a54, data, tail6] - [0xc0ac4, .rodata, ov_SC03_014_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc0ae8, data, tail7] + - [0xc0b08, .rodata, ov_SC03_014_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc0b2c, data, tail8] - [0xc0bb0, .rodata, ov_SC03_014_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0be4, data, tail8] + - [0xc0be4, data, tail9] - [0xc0be8, .rodata, ov_SC03_014_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0c04, data, tail9] + - [0xc0c04, data, tail10] - [0xc0c08, .rodata, ov_SC03_014_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0c24, data, tail10] + - [0xc0c24, data, tail11] - [0xc0c48, .rodata, ov_SC03_014_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0c64, data, tail11] + - [0xc0c64, data, tail12] - [0xc0c7c, .rodata, ov_SC03_014_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0c9c, data, tail12] + - [0xc0c9c, data, tail13] - [0xc0d1c, .rodata, ov_SC03_014_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0d30, data, tail13] + - [0xc0d30, data, tail14] - [0xc0ed8, .rodata, ov_SC03_014_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc1050, data, tail14] + - [0xc1050, data, tail15] - [0xc10e0, .rodata, ov_SC03_014_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc116c, data, tail15] + - [0xc116c, data, tail16] - [0xc11b0, .rodata, ov_SC03_014_jr_8017EB7C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc11d0, data, tail16] + - [0xc11d0, data, tail17] - [0xC2EE4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC2EE7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_015.yaml b/config/splat.ov_SC03_015.yaml index a0afe48a5..edd9e7d26 100644 --- a/config/splat.ov_SC03_015.yaml +++ b/config/splat.ov_SC03_015.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_015_after] - [0x2c2f4, c, ov_SC03_015_jr_8015444C] - [0x2cacc, c, ov_SC03_015_jr_80154C24] + - [0x30774, c, ov_SC03_015_jr_801588CC] - [0x31b2c, c, ov_SC03_015_jr_80159C84] - [0x32270, c, ov_SC03_015_jr_8015A3C8] - [0x32cd4, c, ov_SC03_015_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xc0a54, data, tail6] - [0xc0ac4, .rodata, ov_SC03_015_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc0ae8, data, tail7] + - [0xc0b08, .rodata, ov_SC03_015_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc0b2c, data, tail8] - [0xc0bb0, .rodata, ov_SC03_015_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0be4, data, tail8] + - [0xc0be4, data, tail9] - [0xc0be8, .rodata, ov_SC03_015_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0c04, data, tail9] + - [0xc0c04, data, tail10] - [0xc0c08, .rodata, ov_SC03_015_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0c24, data, tail10] + - [0xc0c24, data, tail11] - [0xc0c48, .rodata, ov_SC03_015_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0c64, data, tail11] + - [0xc0c64, data, tail12] - [0xc0c7c, .rodata, ov_SC03_015_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0c9c, data, tail12] + - [0xc0c9c, data, tail13] - [0xc0d1c, .rodata, ov_SC03_015_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc0d30, data, tail13] + - [0xc0d30, data, tail14] - [0xc0ed8, .rodata, ov_SC03_015_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc1050, data, tail14] + - [0xc1050, data, tail15] - [0xc10e0, .rodata, ov_SC03_015_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc116c, data, tail15] + - [0xc116c, data, tail16] - [0xc11b0, .rodata, ov_SC03_015_jr_8017EB7C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc11d0, data, tail16] + - [0xc11d0, data, tail17] - [0xC2EE4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC2EE7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_023.yaml b/config/splat.ov_SC03_023.yaml index 986536be6..81b2259d6 100644 --- a/config/splat.ov_SC03_023.yaml +++ b/config/splat.ov_SC03_023.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_023_after] - [0x2c2f4, c, ov_SC03_023_jr_8015444C] - [0x2cacc, c, ov_SC03_023_jr_80154C24] + - [0x30774, c, ov_SC03_023_jr_801588CC] - [0x31b2c, c, ov_SC03_023_jr_80159C84] - [0x32270, c, ov_SC03_023_jr_8015A3C8] - [0x32cd4, c, ov_SC03_023_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x6f02c, data, tail6] - [0x6f09c, .rodata, ov_SC03_023_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6f0c0, data, tail7] + - [0x6f0e0, .rodata, ov_SC03_023_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6f104, data, tail8] - [0x6f188, .rodata, ov_SC03_023_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6f1bc, data, tail8] + - [0x6f1bc, data, tail9] - [0x6f1c0, .rodata, ov_SC03_023_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6f1dc, data, tail9] + - [0x6f1dc, data, tail10] - [0x6f1e0, .rodata, ov_SC03_023_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6f1fc, data, tail10] + - [0x6f1fc, data, tail11] - [0x6f220, .rodata, ov_SC03_023_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6f23c, data, tail11] + - [0x6f23c, data, tail12] - [0x6f254, .rodata, ov_SC03_023_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6f274, data, tail12] + - [0x6f274, data, tail13] - [0x6f2f4, .rodata, ov_SC03_023_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6f308, data, tail13] + - [0x6f308, data, tail14] - [0x6f4b0, .rodata, ov_SC03_023_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6f628, data, tail14] + - [0x6f628, data, tail15] - [0x6f6b8, .rodata, ov_SC03_023_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6f744, data, tail15] + - [0x6f744, data, tail16] - [0x70C2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x70C2F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_024.yaml b/config/splat.ov_SC03_024.yaml index 3f0eea0b1..57aab916c 100644 --- a/config/splat.ov_SC03_024.yaml +++ b/config/splat.ov_SC03_024.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_024_after] - [0x2c2f4, c, ov_SC03_024_jr_8015444C] - [0x2cacc, c, ov_SC03_024_jr_80154C24] + - [0x30774, c, ov_SC03_024_jr_801588CC] - [0x31b2c, c, ov_SC03_024_jr_80159C84] - [0x32270, c, ov_SC03_024_jr_8015A3C8] - [0x32cd4, c, ov_SC03_024_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x974b4, data, tail6] - [0x97524, .rodata, ov_SC03_024_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x97548, data, tail7] + - [0x97568, .rodata, ov_SC03_024_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9758c, data, tail8] - [0x97610, .rodata, ov_SC03_024_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97644, data, tail8] + - [0x97644, data, tail9] - [0x97648, .rodata, ov_SC03_024_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97664, data, tail9] + - [0x97664, data, tail10] - [0x97668, .rodata, ov_SC03_024_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97684, data, tail10] + - [0x97684, data, tail11] - [0x976a8, .rodata, ov_SC03_024_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x976c4, data, tail11] + - [0x976c4, data, tail12] - [0x976dc, .rodata, ov_SC03_024_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x976fc, data, tail12] + - [0x976fc, data, tail13] - [0x9777c, .rodata, ov_SC03_024_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97790, data, tail13] + - [0x97790, data, tail14] - [0x97938, .rodata, ov_SC03_024_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97ab0, data, tail14] + - [0x97ab0, data, tail15] - [0x97b40, .rodata, ov_SC03_024_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97bcc, data, tail15] + - [0x97bcc, data, tail16] - [0x97c10, .rodata, ov_SC03_024_jr_8017DF84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97c30, data, tail16] + - [0x97c30, data, tail17] - [0x996F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x996F7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_028.yaml b/config/splat.ov_SC03_028.yaml index b7d2fb6f0..736830deb 100644 --- a/config/splat.ov_SC03_028.yaml +++ b/config/splat.ov_SC03_028.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_028_after] - [0x2c2f4, c, ov_SC03_028_jr_8015444C] - [0x2cacc, c, ov_SC03_028_jr_80154C24] + - [0x30774, c, ov_SC03_028_jr_801588CC] - [0x31b2c, c, ov_SC03_028_jr_80159C84] - [0x32270, c, ov_SC03_028_jr_8015A3C8] - [0x32cd4, c, ov_SC03_028_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0xc163c, data, tail6] - [0xc16ac, .rodata, ov_SC03_028_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc16d0, data, tail7] + - [0xc16f0, .rodata, ov_SC03_028_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc1714, data, tail8] - [0xc1798, .rodata, ov_SC03_028_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc17cc, data, tail8] + - [0xc17cc, data, tail9] - [0xc17d0, .rodata, ov_SC03_028_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc17ec, data, tail9] + - [0xc17ec, data, tail10] - [0xc17f0, .rodata, ov_SC03_028_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc180c, data, tail10] + - [0xc180c, data, tail11] - [0xc1830, .rodata, ov_SC03_028_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc184c, data, tail11] + - [0xc184c, data, tail12] - [0xc1864, .rodata, ov_SC03_028_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc1884, data, tail12] + - [0xc1884, data, tail13] - [0xc1904, .rodata, ov_SC03_028_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc1918, data, tail13] + - [0xc1918, data, tail14] - [0xc1ac0, .rodata, ov_SC03_028_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc1c38, data, tail14] + - [0xc1c38, data, tail15] - [0xc1cc8, .rodata, ov_SC03_028_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc1d54, data, tail15] + - [0xc1d54, data, tail16] - [0xC44AC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC44AF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_029.yaml b/config/splat.ov_SC03_029.yaml index 401240197..1d2ad29d5 100644 --- a/config/splat.ov_SC03_029.yaml +++ b/config/splat.ov_SC03_029.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_029_after] - [0x2c2f4, c, ov_SC03_029_jr_8015444C] - [0x2cacc, c, ov_SC03_029_jr_80154C24] + - [0x30774, c, ov_SC03_029_jr_801588CC] - [0x31b2c, c, ov_SC03_029_jr_80159C84] - [0x32270, c, ov_SC03_029_jr_8015A3C8] - [0x32cd4, c, ov_SC03_029_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xaf770, data, tail6] - [0xaf7e0, .rodata, ov_SC03_029_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xaf804, data, tail7] + - [0xaf824, .rodata, ov_SC03_029_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xaf848, data, tail8] - [0xaf8cc, .rodata, ov_SC03_029_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaf900, data, tail8] + - [0xaf900, data, tail9] - [0xaf904, .rodata, ov_SC03_029_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaf920, data, tail9] + - [0xaf920, data, tail10] - [0xaf924, .rodata, ov_SC03_029_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaf940, data, tail10] + - [0xaf940, data, tail11] - [0xaf964, .rodata, ov_SC03_029_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaf980, data, tail11] + - [0xaf980, data, tail12] - [0xaf998, .rodata, ov_SC03_029_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaf9b8, data, tail12] + - [0xaf9b8, data, tail13] - [0xafa38, .rodata, ov_SC03_029_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xafa4c, data, tail13] + - [0xafa4c, data, tail14] - [0xafbf4, .rodata, ov_SC03_029_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xafd6c, data, tail14] + - [0xafd6c, data, tail15] - [0xafdfc, .rodata, ov_SC03_029_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xafe88, data, tail15] + - [0xafe88, data, tail16] - [0xafea0, .rodata, ov_SC03_029_jr_8017DC70] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xafec0, data, tail16] + - [0xafec0, data, tail17] - [0xB18EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xB18EF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_030.yaml b/config/splat.ov_SC03_030.yaml index 4263e68a6..440d55ed9 100644 --- a/config/splat.ov_SC03_030.yaml +++ b/config/splat.ov_SC03_030.yaml @@ -101,6 +101,7 @@ segments: - [0x1d64c, c, ov_SC03_030_after] - [0x2c2f4, c, ov_SC03_030_jr_8015444C] - [0x2cacc, c, ov_SC03_030_jr_80154C24] + - [0x30774, c, ov_SC03_030_jr_801588CC] - [0x31b2c, c, ov_SC03_030_jr_80159C84] - [0x32270, c, ov_SC03_030_jr_8015A3C8] - [0x32cd4, c, ov_SC03_030_jr_8015AE2C] @@ -120,22 +121,24 @@ segments: - [0xb7e14, data, tail5] - [0xb7e84, .rodata, ov_SC03_030_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb7ea8, data, tail6] + - [0xb7ec8, .rodata, ov_SC03_030_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb7eec, data, tail7] - [0xb7f70, .rodata, ov_SC03_030_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7fa4, data, tail7] + - [0xb7fa4, data, tail8] - [0xb7fa8, .rodata, ov_SC03_030_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7fc4, data, tail8] + - [0xb7fc4, data, tail9] - [0xb7fc8, .rodata, ov_SC03_030_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7fe4, data, tail9] + - [0xb7fe4, data, tail10] - [0xb8008, .rodata, ov_SC03_030_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb8024, data, tail10] + - [0xb8024, data, tail11] - [0xb803c, .rodata, ov_SC03_030_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb805c, data, tail11] + - [0xb805c, data, tail12] - [0xb80dc, .rodata, ov_SC03_030_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb80f0, data, tail12] + - [0xb80f0, data, tail13] - [0xb8298, .rodata, ov_SC03_030_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb8410, data, tail13] + - [0xb8410, data, tail14] - [0xb84a0, .rodata, ov_SC03_030_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb852c, data, tail14] + - [0xb852c, data, tail15] - [0xB9AF0] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes # ` - [0x, bin, trailing]` (the final 1-3 bytes spimdisasm's data path drops); diff --git a/config/splat.ov_SC03_031.yaml b/config/splat.ov_SC03_031.yaml index 61112f50e..8fc753ed5 100644 --- a/config/splat.ov_SC03_031.yaml +++ b/config/splat.ov_SC03_031.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_031_after] - [0x2c2f4, c, ov_SC03_031_jr_8015444C] - [0x2cacc, c, ov_SC03_031_jr_80154C24] + - [0x30774, c, ov_SC03_031_jr_801588CC] - [0x31b2c, c, ov_SC03_031_jr_80159C84] - [0x32270, c, ov_SC03_031_jr_8015A3C8] - [0x32cd4, c, ov_SC03_031_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x9c2b8, data, tail6] - [0x9c328, .rodata, ov_SC03_031_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9c34c, data, tail7] + - [0x9c36c, .rodata, ov_SC03_031_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9c390, data, tail8] - [0x9c414, .rodata, ov_SC03_031_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c448, data, tail8] + - [0x9c448, data, tail9] - [0x9c44c, .rodata, ov_SC03_031_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c468, data, tail9] + - [0x9c468, data, tail10] - [0x9c46c, .rodata, ov_SC03_031_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c488, data, tail10] + - [0x9c488, data, tail11] - [0x9c4ac, .rodata, ov_SC03_031_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c4c8, data, tail11] + - [0x9c4c8, data, tail12] - [0x9c4e0, .rodata, ov_SC03_031_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c500, data, tail12] + - [0x9c500, data, tail13] - [0x9c580, .rodata, ov_SC03_031_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c594, data, tail13] + - [0x9c594, data, tail14] - [0x9c73c, .rodata, ov_SC03_031_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c8b4, data, tail14] + - [0x9c8b4, data, tail15] - [0x9c944, .rodata, ov_SC03_031_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9c9d0, data, tail15] + - [0x9c9d0, data, tail16] - [0x9c9e8, .rodata, ov_SC03_031_jr_8017DB5C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ca08, data, tail16] + - [0x9ca08, data, tail17] - [0x9E14C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9E14F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_089.yaml b/config/splat.ov_SC03_089.yaml index 8cbc3e663..eabb78d65 100644 --- a/config/splat.ov_SC03_089.yaml +++ b/config/splat.ov_SC03_089.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_089_after] - [0x2c2f4, c, ov_SC03_089_jr_8015444C] - [0x2cacc, c, ov_SC03_089_jr_80154C24] + - [0x30774, c, ov_SC03_089_jr_801588CC] - [0x31b2c, c, ov_SC03_089_jr_80159C84] - [0x32270, c, ov_SC03_089_jr_8015A3C8] - [0x32cd4, c, ov_SC03_089_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x9cb24, data, tail6] - [0x9cb94, .rodata, ov_SC03_089_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9cbb8, data, tail7] + - [0x9cbd8, .rodata, ov_SC03_089_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9cbfc, data, tail8] - [0x9cc80, .rodata, ov_SC03_089_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ccb4, data, tail8] + - [0x9ccb4, data, tail9] - [0x9ccb8, .rodata, ov_SC03_089_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ccd4, data, tail9] + - [0x9ccd4, data, tail10] - [0x9ccd8, .rodata, ov_SC03_089_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ccf4, data, tail10] + - [0x9ccf4, data, tail11] - [0x9cd18, .rodata, ov_SC03_089_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9cd34, data, tail11] + - [0x9cd34, data, tail12] - [0x9cd4c, .rodata, ov_SC03_089_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9cd6c, data, tail12] + - [0x9cd6c, data, tail13] - [0x9cdec, .rodata, ov_SC03_089_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ce00, data, tail13] + - [0x9ce00, data, tail14] - [0x9cfa8, .rodata, ov_SC03_089_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d120, data, tail14] + - [0x9d120, data, tail15] - [0x9d1b0, .rodata, ov_SC03_089_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d23c, data, tail15] + - [0x9d23c, data, tail16] - [0x9d254, .rodata, ov_SC03_089_jr_8017CA80] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d274, data, tail16] + - [0x9d274, data, tail17] - [0x9E7C4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9E7C7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_090.yaml b/config/splat.ov_SC03_090.yaml index 4effceea1..f65767af6 100644 --- a/config/splat.ov_SC03_090.yaml +++ b/config/splat.ov_SC03_090.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_090_after] - [0x2c2f4, c, ov_SC03_090_jr_8015444C] - [0x2cacc, c, ov_SC03_090_jr_80154C24] + - [0x30774, c, ov_SC03_090_jr_801588CC] - [0x31b2c, c, ov_SC03_090_jr_80159C84] - [0x32270, c, ov_SC03_090_jr_8015A3C8] - [0x32cd4, c, ov_SC03_090_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xa1f90, data, tail6] - [0xa2000, .rodata, ov_SC03_090_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa2024, data, tail7] + - [0xa2044, .rodata, ov_SC03_090_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa2068, data, tail8] - [0xa20ec, .rodata, ov_SC03_090_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2120, data, tail8] + - [0xa2120, data, tail9] - [0xa2124, .rodata, ov_SC03_090_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2140, data, tail9] + - [0xa2140, data, tail10] - [0xa2144, .rodata, ov_SC03_090_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2160, data, tail10] + - [0xa2160, data, tail11] - [0xa2184, .rodata, ov_SC03_090_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa21a0, data, tail11] + - [0xa21a0, data, tail12] - [0xa21b8, .rodata, ov_SC03_090_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa21d8, data, tail12] + - [0xa21d8, data, tail13] - [0xa2258, .rodata, ov_SC03_090_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa226c, data, tail13] + - [0xa226c, data, tail14] - [0xa2414, .rodata, ov_SC03_090_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa258c, data, tail14] + - [0xa258c, data, tail15] - [0xa261c, .rodata, ov_SC03_090_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa26a8, data, tail15] + - [0xa26a8, data, tail16] - [0xa26c0, .rodata, ov_SC03_090_jr_8017CA80] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa26e0, data, tail16] + - [0xa26e0, data, tail17] - [0xA3C34, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA3C37] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_091.yaml b/config/splat.ov_SC03_091.yaml index f22ceac2f..4414828f3 100644 --- a/config/splat.ov_SC03_091.yaml +++ b/config/splat.ov_SC03_091.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_091_after] - [0x2c2f4, c, ov_SC03_091_jr_8015444C] - [0x2cacc, c, ov_SC03_091_jr_80154C24] + - [0x30774, c, ov_SC03_091_jr_801588CC] - [0x31b2c, c, ov_SC03_091_jr_80159C84] - [0x32270, c, ov_SC03_091_jr_8015A3C8] - [0x32cd4, c, ov_SC03_091_jr_8015AE2C] @@ -125,24 +126,26 @@ segments: - [0xa865c, data, tail6] - [0xa86cc, .rodata, ov_SC03_091_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa86f0, data, tail7] + - [0xa8710, .rodata, ov_SC03_091_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa8734, data, tail8] - [0xa87b8, .rodata, ov_SC03_091_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa87ec, data, tail8] + - [0xa87ec, data, tail9] - [0xa87f0, .rodata, ov_SC03_091_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa880c, data, tail9] + - [0xa880c, data, tail10] - [0xa8810, .rodata, ov_SC03_091_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa882c, data, tail10] + - [0xa882c, data, tail11] - [0xa8850, .rodata, ov_SC03_091_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa886c, data, tail11] + - [0xa886c, data, tail12] - [0xa8884, .rodata, ov_SC03_091_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa88a4, data, tail12] + - [0xa88a4, data, tail13] - [0xa8924, .rodata, ov_SC03_091_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa8938, data, tail13] + - [0xa8938, data, tail14] - [0xa8ae0, .rodata, ov_SC03_091_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa8c58, data, tail14] + - [0xa8c58, data, tail15] - [0xa8ce8, .rodata, ov_SC03_091_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa8d74, data, tail15] + - [0xa8d74, data, tail16] - [0xa8d8c, .rodata, ov_SC03_091_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa8dac, data, tail16] + - [0xa8dac, data, tail17] - [0xAA584, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xAA587] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_092.yaml b/config/splat.ov_SC03_092.yaml index 4aa0cb8ed..cf911bc00 100644 --- a/config/splat.ov_SC03_092.yaml +++ b/config/splat.ov_SC03_092.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_092_after] - [0x2c2f4, c, ov_SC03_092_jr_8015444C] - [0x2cacc, c, ov_SC03_092_jr_80154C24] + - [0x30774, c, ov_SC03_092_jr_801588CC] - [0x31b2c, c, ov_SC03_092_jr_80159C84] - [0x32270, c, ov_SC03_092_jr_8015A3C8] - [0x32cd4, c, ov_SC03_092_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x89234, data, tail6] - [0x892a4, .rodata, ov_SC03_092_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x892c8, data, tail7] + - [0x892e8, .rodata, ov_SC03_092_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8930c, data, tail8] - [0x89390, .rodata, ov_SC03_092_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x893c4, data, tail8] + - [0x893c4, data, tail9] - [0x893c8, .rodata, ov_SC03_092_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x893e4, data, tail9] + - [0x893e4, data, tail10] - [0x893e8, .rodata, ov_SC03_092_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x89404, data, tail10] + - [0x89404, data, tail11] - [0x89428, .rodata, ov_SC03_092_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x89444, data, tail11] + - [0x89444, data, tail12] - [0x8945c, .rodata, ov_SC03_092_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8947c, data, tail12] + - [0x8947c, data, tail13] - [0x894fc, .rodata, ov_SC03_092_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x89510, data, tail13] + - [0x89510, data, tail14] - [0x896b8, .rodata, ov_SC03_092_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x89830, data, tail14] + - [0x89830, data, tail15] - [0x898c0, .rodata, ov_SC03_092_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8994c, data, tail15] + - [0x8994c, data, tail16] - [0x8AF2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8AF2F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_093.yaml b/config/splat.ov_SC03_093.yaml index 0af996dc2..c1e99e60c 100644 --- a/config/splat.ov_SC03_093.yaml +++ b/config/splat.ov_SC03_093.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_093_after] - [0x2c2f4, c, ov_SC03_093_jr_8015444C] - [0x2cacc, c, ov_SC03_093_jr_80154C24] + - [0x30774, c, ov_SC03_093_jr_801588CC] - [0x31b2c, c, ov_SC03_093_jr_80159C84] - [0x32270, c, ov_SC03_093_jr_8015A3C8] - [0x32cd4, c, ov_SC03_093_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xa2688, data, tail6] - [0xa26f8, .rodata, ov_SC03_093_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa271c, data, tail7] + - [0xa273c, .rodata, ov_SC03_093_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa2760, data, tail8] - [0xa27e4, .rodata, ov_SC03_093_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2818, data, tail8] + - [0xa2818, data, tail9] - [0xa281c, .rodata, ov_SC03_093_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2838, data, tail9] + - [0xa2838, data, tail10] - [0xa283c, .rodata, ov_SC03_093_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2858, data, tail10] + - [0xa2858, data, tail11] - [0xa287c, .rodata, ov_SC03_093_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2898, data, tail11] + - [0xa2898, data, tail12] - [0xa28b0, .rodata, ov_SC03_093_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa28d0, data, tail12] + - [0xa28d0, data, tail13] - [0xa2950, .rodata, ov_SC03_093_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2964, data, tail13] + - [0xa2964, data, tail14] - [0xa2b0c, .rodata, ov_SC03_093_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2c84, data, tail14] + - [0xa2c84, data, tail15] - [0xa2d14, .rodata, ov_SC03_093_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2da0, data, tail15] + - [0xa2da0, data, tail16] - [0xa2db8, .rodata, ov_SC03_093_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa2dd8, data, tail16] + - [0xa2dd8, data, tail17] - [0xA4584, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA4587] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_094.yaml b/config/splat.ov_SC03_094.yaml index a03d8b627..e0469a57e 100644 --- a/config/splat.ov_SC03_094.yaml +++ b/config/splat.ov_SC03_094.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_094_after] - [0x2c2f4, c, ov_SC03_094_jr_8015444C] - [0x2cacc, c, ov_SC03_094_jr_80154C24] + - [0x30774, c, ov_SC03_094_jr_801588CC] - [0x31b2c, c, ov_SC03_094_jr_80159C84] - [0x32270, c, ov_SC03_094_jr_8015A3C8] - [0x32cd4, c, ov_SC03_094_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xa94c4, data, tail6] - [0xa9534, .rodata, ov_SC03_094_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa9558, data, tail7] + - [0xa9578, .rodata, ov_SC03_094_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa959c, data, tail8] - [0xa9620, .rodata, ov_SC03_094_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa9654, data, tail8] + - [0xa9654, data, tail9] - [0xa9658, .rodata, ov_SC03_094_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa9674, data, tail9] + - [0xa9674, data, tail10] - [0xa9678, .rodata, ov_SC03_094_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa9694, data, tail10] + - [0xa9694, data, tail11] - [0xa96b8, .rodata, ov_SC03_094_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa96d4, data, tail11] + - [0xa96d4, data, tail12] - [0xa96ec, .rodata, ov_SC03_094_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa970c, data, tail12] + - [0xa970c, data, tail13] - [0xa978c, .rodata, ov_SC03_094_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa97a0, data, tail13] + - [0xa97a0, data, tail14] - [0xa9948, .rodata, ov_SC03_094_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa9ac0, data, tail14] + - [0xa9ac0, data, tail15] - [0xa9b50, .rodata, ov_SC03_094_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa9bdc, data, tail15] + - [0xa9bdc, data, tail16] - [0xa9bf4, .rodata, ov_SC03_094_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa9c14, data, tail16] + - [0xa9c14, data, tail17] - [0xAB13C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xAB13F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_095.yaml b/config/splat.ov_SC03_095.yaml index 562d023a9..32ed6b9c1 100644 --- a/config/splat.ov_SC03_095.yaml +++ b/config/splat.ov_SC03_095.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_095_after] - [0x2c2f4, c, ov_SC03_095_jr_8015444C] - [0x2cacc, c, ov_SC03_095_jr_80154C24] + - [0x30774, c, ov_SC03_095_jr_801588CC] - [0x31b2c, c, ov_SC03_095_jr_80159C84] - [0x32270, c, ov_SC03_095_jr_8015A3C8] - [0x32cd4, c, ov_SC03_095_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x720f0, data, tail6] - [0x72160, .rodata, ov_SC03_095_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x72184, data, tail7] + - [0x721a4, .rodata, ov_SC03_095_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x721c8, data, tail8] - [0x7224c, .rodata, ov_SC03_095_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72280, data, tail8] + - [0x72280, data, tail9] - [0x72284, .rodata, ov_SC03_095_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x722a0, data, tail9] + - [0x722a0, data, tail10] - [0x722a4, .rodata, ov_SC03_095_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x722c0, data, tail10] + - [0x722c0, data, tail11] - [0x722e4, .rodata, ov_SC03_095_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72300, data, tail11] + - [0x72300, data, tail12] - [0x72318, .rodata, ov_SC03_095_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72338, data, tail12] + - [0x72338, data, tail13] - [0x723b8, .rodata, ov_SC03_095_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x723cc, data, tail13] + - [0x723cc, data, tail14] - [0x72574, .rodata, ov_SC03_095_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x726ec, data, tail14] + - [0x726ec, data, tail15] - [0x7277c, .rodata, ov_SC03_095_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72808, data, tail15] + - [0x72808, data, tail16] - [0x72820, .rodata, ov_SC03_095_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72840, data, tail16] + - [0x72840, data, tail17] - [0x73D3C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x73D3F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_096.yaml b/config/splat.ov_SC03_096.yaml index 41bd7e291..91e58f09a 100644 --- a/config/splat.ov_SC03_096.yaml +++ b/config/splat.ov_SC03_096.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_096_after] - [0x2c2f4, c, ov_SC03_096_jr_8015444C] - [0x2cacc, c, ov_SC03_096_jr_80154C24] + - [0x30774, c, ov_SC03_096_jr_801588CC] - [0x31b2c, c, ov_SC03_096_jr_80159C84] - [0x32270, c, ov_SC03_096_jr_8015A3C8] - [0x32cd4, c, ov_SC03_096_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x70ba4, data, tail6] - [0x70c14, .rodata, ov_SC03_096_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x70c38, data, tail7] + - [0x70c58, .rodata, ov_SC03_096_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x70c7c, data, tail8] - [0x70d00, .rodata, ov_SC03_096_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70d34, data, tail8] + - [0x70d34, data, tail9] - [0x70d38, .rodata, ov_SC03_096_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70d54, data, tail9] + - [0x70d54, data, tail10] - [0x70d58, .rodata, ov_SC03_096_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70d74, data, tail10] + - [0x70d74, data, tail11] - [0x70d98, .rodata, ov_SC03_096_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70db4, data, tail11] + - [0x70db4, data, tail12] - [0x70dcc, .rodata, ov_SC03_096_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70dec, data, tail12] + - [0x70dec, data, tail13] - [0x70e6c, .rodata, ov_SC03_096_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70e80, data, tail13] + - [0x70e80, data, tail14] - [0x71028, .rodata, ov_SC03_096_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x711a0, data, tail14] + - [0x711a0, data, tail15] - [0x71230, .rodata, ov_SC03_096_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x712bc, data, tail15] + - [0x712bc, data, tail16] - [0x712d4, .rodata, ov_SC03_096_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x712f4, data, tail16] + - [0x712f4, data, tail17] - [0x727F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x727F7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_097.yaml b/config/splat.ov_SC03_097.yaml index 0d270b4b0..e6347f336 100644 --- a/config/splat.ov_SC03_097.yaml +++ b/config/splat.ov_SC03_097.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_097_after] - [0x2c2f4, c, ov_SC03_097_jr_8015444C] - [0x2cacc, c, ov_SC03_097_jr_80154C24] + - [0x30774, c, ov_SC03_097_jr_801588CC] - [0x31b2c, c, ov_SC03_097_jr_80159C84] - [0x32270, c, ov_SC03_097_jr_8015A3C8] - [0x32cd4, c, ov_SC03_097_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x80c14, data, tail6] - [0x80c84, .rodata, ov_SC03_097_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x80ca8, data, tail7] + - [0x80cc8, .rodata, ov_SC03_097_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x80cec, data, tail8] - [0x80d70, .rodata, ov_SC03_097_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80da4, data, tail8] + - [0x80da4, data, tail9] - [0x80da8, .rodata, ov_SC03_097_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80dc4, data, tail9] + - [0x80dc4, data, tail10] - [0x80dc8, .rodata, ov_SC03_097_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80de4, data, tail10] + - [0x80de4, data, tail11] - [0x80e08, .rodata, ov_SC03_097_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80e24, data, tail11] + - [0x80e24, data, tail12] - [0x80e3c, .rodata, ov_SC03_097_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80e5c, data, tail12] + - [0x80e5c, data, tail13] - [0x80edc, .rodata, ov_SC03_097_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80ef0, data, tail13] + - [0x80ef0, data, tail14] - [0x81098, .rodata, ov_SC03_097_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x81210, data, tail14] + - [0x81210, data, tail15] - [0x812a0, .rodata, ov_SC03_097_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8132c, data, tail15] + - [0x8132c, data, tail16] - [0x81344, .rodata, ov_SC03_097_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x81364, data, tail16] + - [0x81364, data, tail17] - [0x82D74, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x82D77] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_098.yaml b/config/splat.ov_SC03_098.yaml index e7cee0c0b..8f6a8d1d3 100644 --- a/config/splat.ov_SC03_098.yaml +++ b/config/splat.ov_SC03_098.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_098_after] - [0x2c2f4, c, ov_SC03_098_jr_8015444C] - [0x2cacc, c, ov_SC03_098_jr_80154C24] + - [0x30774, c, ov_SC03_098_jr_801588CC] - [0x31b2c, c, ov_SC03_098_jr_80159C84] - [0x32270, c, ov_SC03_098_jr_8015A3C8] - [0x32cd4, c, ov_SC03_098_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x9b898, data, tail6] - [0x9b908, .rodata, ov_SC03_098_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9b92c, data, tail7] + - [0x9b94c, .rodata, ov_SC03_098_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9b970, data, tail8] - [0x9b9f4, .rodata, ov_SC03_098_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ba28, data, tail8] + - [0x9ba28, data, tail9] - [0x9ba2c, .rodata, ov_SC03_098_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ba48, data, tail9] + - [0x9ba48, data, tail10] - [0x9ba4c, .rodata, ov_SC03_098_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ba68, data, tail10] + - [0x9ba68, data, tail11] - [0x9ba8c, .rodata, ov_SC03_098_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9baa8, data, tail11] + - [0x9baa8, data, tail12] - [0x9bac0, .rodata, ov_SC03_098_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9bae0, data, tail12] + - [0x9bae0, data, tail13] - [0x9bb60, .rodata, ov_SC03_098_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9bb74, data, tail13] + - [0x9bb74, data, tail14] - [0x9bd1c, .rodata, ov_SC03_098_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9be94, data, tail14] + - [0x9be94, data, tail15] - [0x9bf24, .rodata, ov_SC03_098_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9bfb0, data, tail15] + - [0x9bfb0, data, tail16] - [0x9bfc8, .rodata, ov_SC03_098_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9bfe8, data, tail16] + - [0x9bfe8, data, tail17] - [0x9D75C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9D75F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_099.yaml b/config/splat.ov_SC03_099.yaml index 95c68bb50..051321494 100644 --- a/config/splat.ov_SC03_099.yaml +++ b/config/splat.ov_SC03_099.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_099_after] - [0x2c2f4, c, ov_SC03_099_jr_8015444C] - [0x2cacc, c, ov_SC03_099_jr_80154C24] + - [0x30774, c, ov_SC03_099_jr_801588CC] - [0x31b2c, c, ov_SC03_099_jr_80159C84] - [0x32270, c, ov_SC03_099_jr_8015A3C8] - [0x32cd4, c, ov_SC03_099_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x9556c, data, tail6] - [0x955dc, .rodata, ov_SC03_099_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x95600, data, tail7] + - [0x95620, .rodata, ov_SC03_099_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x95644, data, tail8] - [0x956c8, .rodata, ov_SC03_099_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x956fc, data, tail8] + - [0x956fc, data, tail9] - [0x95700, .rodata, ov_SC03_099_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9571c, data, tail9] + - [0x9571c, data, tail10] - [0x95720, .rodata, ov_SC03_099_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9573c, data, tail10] + - [0x9573c, data, tail11] - [0x95760, .rodata, ov_SC03_099_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9577c, data, tail11] + - [0x9577c, data, tail12] - [0x95794, .rodata, ov_SC03_099_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x957b4, data, tail12] + - [0x957b4, data, tail13] - [0x95834, .rodata, ov_SC03_099_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x95848, data, tail13] + - [0x95848, data, tail14] - [0x959f0, .rodata, ov_SC03_099_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x95b68, data, tail14] + - [0x95b68, data, tail15] - [0x95bf8, .rodata, ov_SC03_099_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x95c84, data, tail15] + - [0x95c84, data, tail16] - [0x95c9c, .rodata, ov_SC03_099_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x95cbc, data, tail16] + - [0x95cbc, data, tail17] - [0x97304, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x97307] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_100.yaml b/config/splat.ov_SC03_100.yaml index 1e421415e..2c0fb898e 100644 --- a/config/splat.ov_SC03_100.yaml +++ b/config/splat.ov_SC03_100.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_100_after] - [0x2c2f4, c, ov_SC03_100_jr_8015444C] - [0x2cacc, c, ov_SC03_100_jr_80154C24] + - [0x30774, c, ov_SC03_100_jr_801588CC] - [0x31b2c, c, ov_SC03_100_jr_80159C84] - [0x32270, c, ov_SC03_100_jr_8015A3C8] - [0x32cd4, c, ov_SC03_100_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x9e7f0, data, tail6] - [0x9e860, .rodata, ov_SC03_100_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9e884, data, tail7] + - [0x9e8a4, .rodata, ov_SC03_100_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9e8c8, data, tail8] - [0x9e94c, .rodata, ov_SC03_100_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9e980, data, tail8] + - [0x9e980, data, tail9] - [0x9e984, .rodata, ov_SC03_100_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9e9a0, data, tail9] + - [0x9e9a0, data, tail10] - [0x9e9a4, .rodata, ov_SC03_100_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9e9c0, data, tail10] + - [0x9e9c0, data, tail11] - [0x9e9e4, .rodata, ov_SC03_100_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ea00, data, tail11] + - [0x9ea00, data, tail12] - [0x9ea18, .rodata, ov_SC03_100_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ea38, data, tail12] + - [0x9ea38, data, tail13] - [0x9eab8, .rodata, ov_SC03_100_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9eacc, data, tail13] + - [0x9eacc, data, tail14] - [0x9ec74, .rodata, ov_SC03_100_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9edec, data, tail14] + - [0x9edec, data, tail15] - [0x9ee7c, .rodata, ov_SC03_100_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ef08, data, tail15] + - [0x9ef08, data, tail16] - [0x9ef20, .rodata, ov_SC03_100_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ef40, data, tail16] + - [0x9ef40, data, tail17] - [0xA080C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA080F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_101.yaml b/config/splat.ov_SC03_101.yaml index c543d5e58..fe37321b4 100644 --- a/config/splat.ov_SC03_101.yaml +++ b/config/splat.ov_SC03_101.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_101_after] - [0x2c2f4, c, ov_SC03_101_jr_8015444C] - [0x2cacc, c, ov_SC03_101_jr_80154C24] + - [0x30774, c, ov_SC03_101_jr_801588CC] - [0x31b2c, c, ov_SC03_101_jr_80159C84] - [0x32270, c, ov_SC03_101_jr_8015A3C8] - [0x32cd4, c, ov_SC03_101_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x740b8, data, tail6] - [0x74128, .rodata, ov_SC03_101_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7414c, data, tail7] + - [0x7416c, .rodata, ov_SC03_101_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x74190, data, tail8] - [0x74214, .rodata, ov_SC03_101_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x74248, data, tail8] + - [0x74248, data, tail9] - [0x7424c, .rodata, ov_SC03_101_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x74268, data, tail9] + - [0x74268, data, tail10] - [0x7426c, .rodata, ov_SC03_101_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x74288, data, tail10] + - [0x74288, data, tail11] - [0x742ac, .rodata, ov_SC03_101_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x742c8, data, tail11] + - [0x742c8, data, tail12] - [0x742e0, .rodata, ov_SC03_101_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x74300, data, tail12] + - [0x74300, data, tail13] - [0x74380, .rodata, ov_SC03_101_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x74394, data, tail13] + - [0x74394, data, tail14] - [0x7453c, .rodata, ov_SC03_101_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x746b4, data, tail14] + - [0x746b4, data, tail15] - [0x74744, .rodata, ov_SC03_101_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x747d0, data, tail15] + - [0x747d0, data, tail16] - [0x747e8, .rodata, ov_SC03_101_jr_8017CA80] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x74808, data, tail16] + - [0x74808, data, tail17] - [0x760CC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x760CF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_102.yaml b/config/splat.ov_SC03_102.yaml index 0307cfd7f..410187496 100644 --- a/config/splat.ov_SC03_102.yaml +++ b/config/splat.ov_SC03_102.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_102_after] - [0x2c2f4, c, ov_SC03_102_jr_8015444C] - [0x2cacc, c, ov_SC03_102_jr_80154C24] + - [0x30774, c, ov_SC03_102_jr_801588CC] - [0x31b2c, c, ov_SC03_102_jr_80159C84] - [0x32270, c, ov_SC03_102_jr_8015A3C8] - [0x32cd4, c, ov_SC03_102_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x8fd34, data, tail6] - [0x8fda4, .rodata, ov_SC03_102_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8fdc8, data, tail7] + - [0x8fde8, .rodata, ov_SC03_102_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8fe0c, data, tail8] - [0x8fe90, .rodata, ov_SC03_102_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fec4, data, tail8] + - [0x8fec4, data, tail9] - [0x8fec8, .rodata, ov_SC03_102_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fee4, data, tail9] + - [0x8fee4, data, tail10] - [0x8fee8, .rodata, ov_SC03_102_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8ff04, data, tail10] + - [0x8ff04, data, tail11] - [0x8ff28, .rodata, ov_SC03_102_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8ff44, data, tail11] + - [0x8ff44, data, tail12] - [0x8ff5c, .rodata, ov_SC03_102_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8ff7c, data, tail12] + - [0x8ff7c, data, tail13] - [0x8fffc, .rodata, ov_SC03_102_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90010, data, tail13] + - [0x90010, data, tail14] - [0x901b8, .rodata, ov_SC03_102_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90330, data, tail14] + - [0x90330, data, tail15] - [0x903c0, .rodata, ov_SC03_102_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9044c, data, tail15] + - [0x9044c, data, tail16] - [0x90464, .rodata, ov_SC03_102_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90484, data, tail16] + - [0x90484, data, tail17] - [0x91ACC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x91ACF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_103.yaml b/config/splat.ov_SC03_103.yaml index 1807959f4..ab7999436 100644 --- a/config/splat.ov_SC03_103.yaml +++ b/config/splat.ov_SC03_103.yaml @@ -101,6 +101,7 @@ segments: - [0x1d64c, c, ov_SC03_103_after] - [0x2c2f4, c, ov_SC03_103_jr_8015444C] - [0x2cacc, c, ov_SC03_103_jr_80154C24] + - [0x30774, c, ov_SC03_103_jr_801588CC] - [0x31b2c, c, ov_SC03_103_jr_80159C84] - [0x32270, c, ov_SC03_103_jr_8015A3C8] - [0x32cd4, c, ov_SC03_103_jr_8015AE2C] @@ -121,24 +122,26 @@ segments: - [0x9aee8, data, tail5] - [0x9af58, .rodata, ov_SC03_103_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9af7c, data, tail6] + - [0x9af9c, .rodata, ov_SC03_103_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9afc0, data, tail7] - [0x9b044, .rodata, ov_SC03_103_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9b078, data, tail7] + - [0x9b078, data, tail8] - [0x9b07c, .rodata, ov_SC03_103_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9b098, data, tail8] + - [0x9b098, data, tail9] - [0x9b09c, .rodata, ov_SC03_103_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9b0b8, data, tail9] + - [0x9b0b8, data, tail10] - [0x9b0dc, .rodata, ov_SC03_103_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9b0f8, data, tail10] + - [0x9b0f8, data, tail11] - [0x9b110, .rodata, ov_SC03_103_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9b130, data, tail11] + - [0x9b130, data, tail12] - [0x9b1b0, .rodata, ov_SC03_103_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9b1c4, data, tail12] + - [0x9b1c4, data, tail13] - [0x9b36c, .rodata, ov_SC03_103_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9b4e4, data, tail13] + - [0x9b4e4, data, tail14] - [0x9b574, .rodata, ov_SC03_103_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9b600, data, tail14] + - [0x9b600, data, tail15] - [0x9b618, .rodata, ov_SC03_103_jr_8017C294] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9b638, data, tail15] + - [0x9b638, data, tail16] - [0x9CC7C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9CC7F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_104.yaml b/config/splat.ov_SC03_104.yaml index ff0539499..5f03697c6 100644 --- a/config/splat.ov_SC03_104.yaml +++ b/config/splat.ov_SC03_104.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_104_after] - [0x2c2f4, c, ov_SC03_104_jr_8015444C] - [0x2cacc, c, ov_SC03_104_jr_80154C24] + - [0x30774, c, ov_SC03_104_jr_801588CC] - [0x31b2c, c, ov_SC03_104_jr_80159C84] - [0x32270, c, ov_SC03_104_jr_8015A3C8] - [0x32cd4, c, ov_SC03_104_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x96448, data, tail6] - [0x964b8, .rodata, ov_SC03_104_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x964dc, data, tail7] + - [0x964fc, .rodata, ov_SC03_104_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x96520, data, tail8] - [0x965a4, .rodata, ov_SC03_104_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x965d8, data, tail8] + - [0x965d8, data, tail9] - [0x965dc, .rodata, ov_SC03_104_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x965f8, data, tail9] + - [0x965f8, data, tail10] - [0x965fc, .rodata, ov_SC03_104_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x96618, data, tail10] + - [0x96618, data, tail11] - [0x9663c, .rodata, ov_SC03_104_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x96658, data, tail11] + - [0x96658, data, tail12] - [0x96670, .rodata, ov_SC03_104_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x96690, data, tail12] + - [0x96690, data, tail13] - [0x96710, .rodata, ov_SC03_104_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x96724, data, tail13] + - [0x96724, data, tail14] - [0x968cc, .rodata, ov_SC03_104_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x96a44, data, tail14] + - [0x96a44, data, tail15] - [0x96ad4, .rodata, ov_SC03_104_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x96b60, data, tail15] + - [0x96b60, data, tail16] - [0x96b78, .rodata, ov_SC03_104_jr_8017CA80] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x96b98, data, tail16] + - [0x96b98, data, tail17] - [0x9833C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9833F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_105.yaml b/config/splat.ov_SC03_105.yaml index d75e64657..472d37cc6 100644 --- a/config/splat.ov_SC03_105.yaml +++ b/config/splat.ov_SC03_105.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_105_after] - [0x2c2f4, c, ov_SC03_105_jr_8015444C] - [0x2cacc, c, ov_SC03_105_jr_80154C24] + - [0x30774, c, ov_SC03_105_jr_801588CC] - [0x31b2c, c, ov_SC03_105_jr_80159C84] - [0x32270, c, ov_SC03_105_jr_8015A3C8] - [0x32cd4, c, ov_SC03_105_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x8f740, data, tail6] - [0x8f7b0, .rodata, ov_SC03_105_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8f7d4, data, tail7] + - [0x8f7f4, .rodata, ov_SC03_105_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8f818, data, tail8] - [0x8f89c, .rodata, ov_SC03_105_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8f8d0, data, tail8] + - [0x8f8d0, data, tail9] - [0x8f8d4, .rodata, ov_SC03_105_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8f8f0, data, tail9] + - [0x8f8f0, data, tail10] - [0x8f8f4, .rodata, ov_SC03_105_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8f910, data, tail10] + - [0x8f910, data, tail11] - [0x8f934, .rodata, ov_SC03_105_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8f950, data, tail11] + - [0x8f950, data, tail12] - [0x8f968, .rodata, ov_SC03_105_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8f988, data, tail12] + - [0x8f988, data, tail13] - [0x8fa08, .rodata, ov_SC03_105_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fa1c, data, tail13] + - [0x8fa1c, data, tail14] - [0x8fbc4, .rodata, ov_SC03_105_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fd3c, data, tail14] + - [0x8fd3c, data, tail15] - [0x8fdcc, .rodata, ov_SC03_105_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fe58, data, tail15] + - [0x8fe58, data, tail16] - [0x8ffa8, .rodata, ov_SC03_105_jr_8017C8D0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8ffc8, data, tail16] + - [0x8ffc8, data, tail17] - [0x94BC4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x94BC7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_108.yaml b/config/splat.ov_SC03_108.yaml index 28287fdee..64039dfac 100644 --- a/config/splat.ov_SC03_108.yaml +++ b/config/splat.ov_SC03_108.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_108_after] - [0x2c2f4, c, ov_SC03_108_jr_8015444C] - [0x2cacc, c, ov_SC03_108_jr_80154C24] + - [0x30774, c, ov_SC03_108_jr_801588CC] - [0x31b2c, c, ov_SC03_108_jr_80159C84] - [0x32270, c, ov_SC03_108_jr_8015A3C8] - [0x32cd4, c, ov_SC03_108_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x77c48, data, tail6] - [0x77cb8, .rodata, ov_SC03_108_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x77cdc, data, tail7] + - [0x77cfc, .rodata, ov_SC03_108_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x77d20, data, tail8] - [0x77da4, .rodata, ov_SC03_108_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77dd8, data, tail8] + - [0x77dd8, data, tail9] - [0x77ddc, .rodata, ov_SC03_108_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77df8, data, tail9] + - [0x77df8, data, tail10] - [0x77dfc, .rodata, ov_SC03_108_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77e18, data, tail10] + - [0x77e18, data, tail11] - [0x77e3c, .rodata, ov_SC03_108_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77e58, data, tail11] + - [0x77e58, data, tail12] - [0x77e70, .rodata, ov_SC03_108_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77e90, data, tail12] + - [0x77e90, data, tail13] - [0x77f10, .rodata, ov_SC03_108_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77f24, data, tail13] + - [0x77f24, data, tail14] - [0x780cc, .rodata, ov_SC03_108_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x78244, data, tail14] + - [0x78244, data, tail15] - [0x782d4, .rodata, ov_SC03_108_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x78360, data, tail15] + - [0x78360, data, tail16] - [0x78378, .rodata, ov_SC03_108_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x78398, data, tail16] + - [0x78398, data, tail17] - [0x7994C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7994F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_109.yaml b/config/splat.ov_SC03_109.yaml index f67339894..ed7f6d3dc 100644 --- a/config/splat.ov_SC03_109.yaml +++ b/config/splat.ov_SC03_109.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_109_after] - [0x2c2f4, c, ov_SC03_109_jr_8015444C] - [0x2cacc, c, ov_SC03_109_jr_80154C24] + - [0x30774, c, ov_SC03_109_jr_801588CC] - [0x31b2c, c, ov_SC03_109_jr_80159C84] - [0x32270, c, ov_SC03_109_jr_8015A3C8] - [0x32cd4, c, ov_SC03_109_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x70758, data, tail6] - [0x707c8, .rodata, ov_SC03_109_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x707ec, data, tail7] + - [0x7080c, .rodata, ov_SC03_109_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x70830, data, tail8] - [0x708b4, .rodata, ov_SC03_109_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x708e8, data, tail8] + - [0x708e8, data, tail9] - [0x708ec, .rodata, ov_SC03_109_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70908, data, tail9] + - [0x70908, data, tail10] - [0x7090c, .rodata, ov_SC03_109_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70928, data, tail10] + - [0x70928, data, tail11] - [0x7094c, .rodata, ov_SC03_109_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70968, data, tail11] + - [0x70968, data, tail12] - [0x70980, .rodata, ov_SC03_109_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x709a0, data, tail12] + - [0x709a0, data, tail13] - [0x70a20, .rodata, ov_SC03_109_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70a34, data, tail13] + - [0x70a34, data, tail14] - [0x70bdc, .rodata, ov_SC03_109_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70d54, data, tail14] + - [0x70d54, data, tail15] - [0x70de4, .rodata, ov_SC03_109_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70e70, data, tail15] + - [0x70e70, data, tail16] - [0x70e88, .rodata, ov_SC03_109_jr_8017C180] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x70ea8, data, tail16] + - [0x70ea8, data, tail17] - [0x72354, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x72357] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_110.yaml b/config/splat.ov_SC03_110.yaml index f765f161c..6e06f6df1 100644 --- a/config/splat.ov_SC03_110.yaml +++ b/config/splat.ov_SC03_110.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_110_after] - [0x2c2f4, c, ov_SC03_110_jr_8015444C] - [0x2cacc, c, ov_SC03_110_jr_80154C24] + - [0x30774, c, ov_SC03_110_jr_801588CC] - [0x31b2c, c, ov_SC03_110_jr_80159C84] - [0x32270, c, ov_SC03_110_jr_8015A3C8] - [0x32cd4, c, ov_SC03_110_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x783f4, data, tail6] - [0x78464, .rodata, ov_SC03_110_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x78488, data, tail7] + - [0x784a8, .rodata, ov_SC03_110_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x784cc, data, tail8] - [0x78550, .rodata, ov_SC03_110_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x78584, data, tail8] + - [0x78584, data, tail9] - [0x78588, .rodata, ov_SC03_110_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x785a4, data, tail9] + - [0x785a4, data, tail10] - [0x785a8, .rodata, ov_SC03_110_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x785c4, data, tail10] + - [0x785c4, data, tail11] - [0x785e8, .rodata, ov_SC03_110_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x78604, data, tail11] + - [0x78604, data, tail12] - [0x7861c, .rodata, ov_SC03_110_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7863c, data, tail12] + - [0x7863c, data, tail13] - [0x786bc, .rodata, ov_SC03_110_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x786d0, data, tail13] + - [0x786d0, data, tail14] - [0x78878, .rodata, ov_SC03_110_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x789f0, data, tail14] + - [0x789f0, data, tail15] - [0x78a80, .rodata, ov_SC03_110_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x78b0c, data, tail15] + - [0x78b0c, data, tail16] - [0x78b24, .rodata, ov_SC03_110_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x78b44, data, tail16] + - [0x78b44, data, tail17] - [0x7A384, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7A387] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_111.yaml b/config/splat.ov_SC03_111.yaml index 39520c8ee..9329102ea 100644 --- a/config/splat.ov_SC03_111.yaml +++ b/config/splat.ov_SC03_111.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_111_after] - [0x2c2f4, c, ov_SC03_111_jr_8015444C] - [0x2cacc, c, ov_SC03_111_jr_80154C24] + - [0x30774, c, ov_SC03_111_jr_801588CC] - [0x31b2c, c, ov_SC03_111_jr_80159C84] - [0x32270, c, ov_SC03_111_jr_8015A3C8] - [0x32cd4, c, ov_SC03_111_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x8f974, data, tail6] - [0x8f9e4, .rodata, ov_SC03_111_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8fa08, data, tail7] + - [0x8fa28, .rodata, ov_SC03_111_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8fa4c, data, tail8] - [0x8fad0, .rodata, ov_SC03_111_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fb04, data, tail8] + - [0x8fb04, data, tail9] - [0x8fb08, .rodata, ov_SC03_111_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fb24, data, tail9] + - [0x8fb24, data, tail10] - [0x8fb28, .rodata, ov_SC03_111_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fb44, data, tail10] + - [0x8fb44, data, tail11] - [0x8fb68, .rodata, ov_SC03_111_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fb84, data, tail11] + - [0x8fb84, data, tail12] - [0x8fb9c, .rodata, ov_SC03_111_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fbbc, data, tail12] + - [0x8fbbc, data, tail13] - [0x8fc3c, .rodata, ov_SC03_111_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8fc50, data, tail13] + - [0x8fc50, data, tail14] - [0x8fdf8, .rodata, ov_SC03_111_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8ff70, data, tail14] + - [0x8ff70, data, tail15] - [0x90000, .rodata, ov_SC03_111_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9008c, data, tail15] + - [0x9008c, data, tail16] - [0x900a4, .rodata, ov_SC03_111_jr_8017EC58] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x900c4, data, tail16] + - [0x900c4, data, tail17] - [0x91A2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x91A2F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_112.yaml b/config/splat.ov_SC03_112.yaml index d9ff8f4ed..d71718e92 100644 --- a/config/splat.ov_SC03_112.yaml +++ b/config/splat.ov_SC03_112.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_112_after] - [0x2c2f4, c, ov_SC03_112_jr_8015444C] - [0x2cacc, c, ov_SC03_112_jr_80154C24] + - [0x30774, c, ov_SC03_112_jr_801588CC] - [0x31b2c, c, ov_SC03_112_jr_80159C84] - [0x32270, c, ov_SC03_112_jr_8015A3C8] - [0x32cd4, c, ov_SC03_112_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x830dc, data, tail6] - [0x8314c, .rodata, ov_SC03_112_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x83170, data, tail7] + - [0x83190, .rodata, ov_SC03_112_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x831b4, data, tail8] - [0x83238, .rodata, ov_SC03_112_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8326c, data, tail8] + - [0x8326c, data, tail9] - [0x83270, .rodata, ov_SC03_112_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8328c, data, tail9] + - [0x8328c, data, tail10] - [0x83290, .rodata, ov_SC03_112_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x832ac, data, tail10] + - [0x832ac, data, tail11] - [0x832d0, .rodata, ov_SC03_112_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x832ec, data, tail11] + - [0x832ec, data, tail12] - [0x83304, .rodata, ov_SC03_112_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x83324, data, tail12] + - [0x83324, data, tail13] - [0x833a4, .rodata, ov_SC03_112_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x833b8, data, tail13] + - [0x833b8, data, tail14] - [0x83560, .rodata, ov_SC03_112_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x836d8, data, tail14] + - [0x836d8, data, tail15] - [0x83768, .rodata, ov_SC03_112_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x837f4, data, tail15] + - [0x837f4, data, tail16] - [0x8380c, .rodata, ov_SC03_112_jr_8017C294] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8382c, data, tail16] + - [0x8382c, data, tail17] - [0x84FF4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x84FF7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_113.yaml b/config/splat.ov_SC03_113.yaml index 667c51f9e..78ac0818f 100644 --- a/config/splat.ov_SC03_113.yaml +++ b/config/splat.ov_SC03_113.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_113_after] - [0x2c2f4, c, ov_SC03_113_jr_8015444C] - [0x2cacc, c, ov_SC03_113_jr_80154C24] + - [0x30774, c, ov_SC03_113_jr_801588CC] - [0x31b2c, c, ov_SC03_113_jr_80159C84] - [0x32270, c, ov_SC03_113_jr_8015A3C8] - [0x32cd4, c, ov_SC03_113_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x7bd64, data, tail6] - [0x7bdd4, .rodata, ov_SC03_113_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7bdf8, data, tail7] + - [0x7be18, .rodata, ov_SC03_113_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7be3c, data, tail8] - [0x7bec0, .rodata, ov_SC03_113_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7bef4, data, tail8] + - [0x7bef4, data, tail9] - [0x7bef8, .rodata, ov_SC03_113_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7bf14, data, tail9] + - [0x7bf14, data, tail10] - [0x7bf18, .rodata, ov_SC03_113_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7bf34, data, tail10] + - [0x7bf34, data, tail11] - [0x7bf58, .rodata, ov_SC03_113_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7bf74, data, tail11] + - [0x7bf74, data, tail12] - [0x7bf8c, .rodata, ov_SC03_113_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7bfac, data, tail12] + - [0x7bfac, data, tail13] - [0x7c02c, .rodata, ov_SC03_113_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7c040, data, tail13] + - [0x7c040, data, tail14] - [0x7c1e8, .rodata, ov_SC03_113_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7c360, data, tail14] + - [0x7c360, data, tail15] - [0x7c3f0, .rodata, ov_SC03_113_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7c47c, data, tail15] + - [0x7c47c, data, tail16] - [0x7c494, .rodata, ov_SC03_113_jr_8017C294] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7c4b4, data, tail16] + - [0x7c4b4, data, tail17] - [0x7DB94, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7DB97] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_114.yaml b/config/splat.ov_SC03_114.yaml index 693c414bf..cecdf084d 100644 --- a/config/splat.ov_SC03_114.yaml +++ b/config/splat.ov_SC03_114.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_114_after] - [0x2c2f4, c, ov_SC03_114_jr_8015444C] - [0x2cacc, c, ov_SC03_114_jr_80154C24] + - [0x30774, c, ov_SC03_114_jr_801588CC] - [0x31b2c, c, ov_SC03_114_jr_80159C84] - [0x32270, c, ov_SC03_114_jr_8015A3C8] - [0x32cd4, c, ov_SC03_114_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x7fa70, data, tail6] - [0x7fae0, .rodata, ov_SC03_114_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7fb04, data, tail7] + - [0x7fb24, .rodata, ov_SC03_114_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7fb48, data, tail8] - [0x7fbcc, .rodata, ov_SC03_114_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7fc00, data, tail8] + - [0x7fc00, data, tail9] - [0x7fc04, .rodata, ov_SC03_114_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7fc20, data, tail9] + - [0x7fc20, data, tail10] - [0x7fc24, .rodata, ov_SC03_114_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7fc40, data, tail10] + - [0x7fc40, data, tail11] - [0x7fc64, .rodata, ov_SC03_114_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7fc80, data, tail11] + - [0x7fc80, data, tail12] - [0x7fc98, .rodata, ov_SC03_114_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7fcb8, data, tail12] + - [0x7fcb8, data, tail13] - [0x7fd38, .rodata, ov_SC03_114_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7fd4c, data, tail13] + - [0x7fd4c, data, tail14] - [0x7fef4, .rodata, ov_SC03_114_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8006c, data, tail14] + - [0x8006c, data, tail15] - [0x800fc, .rodata, ov_SC03_114_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80188, data, tail15] + - [0x80188, data, tail16] - [0x801a0, .rodata, ov_SC03_114_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x801c0, data, tail16] + - [0x801c0, data, tail17] - [0x8170C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8170F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_115.yaml b/config/splat.ov_SC03_115.yaml index 3b702e28c..119bdde62 100644 --- a/config/splat.ov_SC03_115.yaml +++ b/config/splat.ov_SC03_115.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_115_after] - [0x2c2f4, c, ov_SC03_115_jr_8015444C] - [0x2cacc, c, ov_SC03_115_jr_80154C24] + - [0x30774, c, ov_SC03_115_jr_801588CC] - [0x31b2c, c, ov_SC03_115_jr_80159C84] - [0x32270, c, ov_SC03_115_jr_8015A3C8] - [0x32cd4, c, ov_SC03_115_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x6b3e4, data, tail6] - [0x6b454, .rodata, ov_SC03_115_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6b478, data, tail7] + - [0x6b498, .rodata, ov_SC03_115_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6b4bc, data, tail8] - [0x6b540, .rodata, ov_SC03_115_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b574, data, tail8] + - [0x6b574, data, tail9] - [0x6b578, .rodata, ov_SC03_115_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b594, data, tail9] + - [0x6b594, data, tail10] - [0x6b598, .rodata, ov_SC03_115_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b5b4, data, tail10] + - [0x6b5b4, data, tail11] - [0x6b5d8, .rodata, ov_SC03_115_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b5f4, data, tail11] + - [0x6b5f4, data, tail12] - [0x6b60c, .rodata, ov_SC03_115_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b62c, data, tail12] + - [0x6b62c, data, tail13] - [0x6b6ac, .rodata, ov_SC03_115_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b6c0, data, tail13] + - [0x6b6c0, data, tail14] - [0x6b868, .rodata, ov_SC03_115_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b9e0, data, tail14] + - [0x6b9e0, data, tail15] - [0x6ba70, .rodata, ov_SC03_115_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6bafc, data, tail15] + - [0x6bafc, data, tail16] - [0x6bb14, .rodata, ov_SC03_115_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6bb34, data, tail16] + - [0x6bb34, data, tail17] - [0x6CFE4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6CFE7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_116.yaml b/config/splat.ov_SC03_116.yaml index 3bb70f0dc..95db8092d 100644 --- a/config/splat.ov_SC03_116.yaml +++ b/config/splat.ov_SC03_116.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_116_after] - [0x2c2f4, c, ov_SC03_116_jr_8015444C] - [0x2cacc, c, ov_SC03_116_jr_80154C24] + - [0x30774, c, ov_SC03_116_jr_801588CC] - [0x31b2c, c, ov_SC03_116_jr_80159C84] - [0x32270, c, ov_SC03_116_jr_8015A3C8] - [0x32cd4, c, ov_SC03_116_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x6df80, data, tail6] - [0x6dff0, .rodata, ov_SC03_116_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6e014, data, tail7] + - [0x6e034, .rodata, ov_SC03_116_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6e058, data, tail8] - [0x6e0dc, .rodata, ov_SC03_116_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e110, data, tail8] + - [0x6e110, data, tail9] - [0x6e114, .rodata, ov_SC03_116_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e130, data, tail9] + - [0x6e130, data, tail10] - [0x6e134, .rodata, ov_SC03_116_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e150, data, tail10] + - [0x6e150, data, tail11] - [0x6e174, .rodata, ov_SC03_116_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e190, data, tail11] + - [0x6e190, data, tail12] - [0x6e1a8, .rodata, ov_SC03_116_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e1c8, data, tail12] + - [0x6e1c8, data, tail13] - [0x6e248, .rodata, ov_SC03_116_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e25c, data, tail13] + - [0x6e25c, data, tail14] - [0x6e404, .rodata, ov_SC03_116_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e57c, data, tail14] + - [0x6e57c, data, tail15] - [0x6e60c, .rodata, ov_SC03_116_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e698, data, tail15] + - [0x6e698, data, tail16] - [0x6FBF4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6FBF7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_117.yaml b/config/splat.ov_SC03_117.yaml index c03386573..42e99a1bc 100644 --- a/config/splat.ov_SC03_117.yaml +++ b/config/splat.ov_SC03_117.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_117_after] - [0x2c2f4, c, ov_SC03_117_jr_8015444C] - [0x2cacc, c, ov_SC03_117_jr_80154C24] + - [0x30774, c, ov_SC03_117_jr_801588CC] - [0x31b2c, c, ov_SC03_117_jr_80159C84] - [0x32270, c, ov_SC03_117_jr_8015A3C8] - [0x32cd4, c, ov_SC03_117_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xa4620, data, tail6] - [0xa4690, .rodata, ov_SC03_117_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa46b4, data, tail7] + - [0xa46d4, .rodata, ov_SC03_117_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa46f8, data, tail8] - [0xa477c, .rodata, ov_SC03_117_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa47b0, data, tail8] + - [0xa47b0, data, tail9] - [0xa47b4, .rodata, ov_SC03_117_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa47d0, data, tail9] + - [0xa47d0, data, tail10] - [0xa47d4, .rodata, ov_SC03_117_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa47f0, data, tail10] + - [0xa47f0, data, tail11] - [0xa4814, .rodata, ov_SC03_117_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa4830, data, tail11] + - [0xa4830, data, tail12] - [0xa4848, .rodata, ov_SC03_117_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa4868, data, tail12] + - [0xa4868, data, tail13] - [0xa48e8, .rodata, ov_SC03_117_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa48fc, data, tail13] + - [0xa48fc, data, tail14] - [0xa4aa4, .rodata, ov_SC03_117_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa4c1c, data, tail14] + - [0xa4c1c, data, tail15] - [0xa4cac, .rodata, ov_SC03_117_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa4d38, data, tail15] + - [0xa4d38, data, tail16] - [0xa4d50, .rodata, ov_SC03_117_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa4d70, data, tail16] + - [0xa4d70, data, tail17] - [0xA67EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA67EF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_118.yaml b/config/splat.ov_SC03_118.yaml index ec89f5389..032d97157 100644 --- a/config/splat.ov_SC03_118.yaml +++ b/config/splat.ov_SC03_118.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_118_after] - [0x2c2f4, c, ov_SC03_118_jr_8015444C] - [0x2cacc, c, ov_SC03_118_jr_80154C24] + - [0x30774, c, ov_SC03_118_jr_801588CC] - [0x31b2c, c, ov_SC03_118_jr_80159C84] - [0x32270, c, ov_SC03_118_jr_8015A3C8] - [0x32cd4, c, ov_SC03_118_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xaa57c, data, tail6] - [0xaa5ec, .rodata, ov_SC03_118_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xaa610, data, tail7] + - [0xaa630, .rodata, ov_SC03_118_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xaa654, data, tail8] - [0xaa6d8, .rodata, ov_SC03_118_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaa70c, data, tail8] + - [0xaa70c, data, tail9] - [0xaa710, .rodata, ov_SC03_118_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaa72c, data, tail9] + - [0xaa72c, data, tail10] - [0xaa730, .rodata, ov_SC03_118_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaa74c, data, tail10] + - [0xaa74c, data, tail11] - [0xaa770, .rodata, ov_SC03_118_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaa78c, data, tail11] + - [0xaa78c, data, tail12] - [0xaa7a4, .rodata, ov_SC03_118_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaa7c4, data, tail12] + - [0xaa7c4, data, tail13] - [0xaa844, .rodata, ov_SC03_118_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaa858, data, tail13] + - [0xaa858, data, tail14] - [0xaaa00, .rodata, ov_SC03_118_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaab78, data, tail14] + - [0xaab78, data, tail15] - [0xaac08, .rodata, ov_SC03_118_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaac94, data, tail15] + - [0xaac94, data, tail16] - [0xaacd8, .rodata, ov_SC03_118_jr_8017FB84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaacf8, data, tail16] + - [0xaacf8, data, tail17] - [0xAC6F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xAC6F7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_119.yaml b/config/splat.ov_SC03_119.yaml index 41ce438f7..d5a498cd1 100644 --- a/config/splat.ov_SC03_119.yaml +++ b/config/splat.ov_SC03_119.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_119_after] - [0x2c2f4, c, ov_SC03_119_jr_8015444C] - [0x2cacc, c, ov_SC03_119_jr_80154C24] + - [0x30774, c, ov_SC03_119_jr_801588CC] - [0x31b2c, c, ov_SC03_119_jr_80159C84] - [0x32270, c, ov_SC03_119_jr_8015A3C8] - [0x32cd4, c, ov_SC03_119_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xaa57c, data, tail6] - [0xaa5ec, .rodata, ov_SC03_119_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xaa610, data, tail7] + - [0xaa630, .rodata, ov_SC03_119_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xaa654, data, tail8] - [0xaa6d8, .rodata, ov_SC03_119_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaa70c, data, tail8] + - [0xaa70c, data, tail9] - [0xaa710, .rodata, ov_SC03_119_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaa72c, data, tail9] + - [0xaa72c, data, tail10] - [0xaa730, .rodata, ov_SC03_119_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaa74c, data, tail10] + - [0xaa74c, data, tail11] - [0xaa770, .rodata, ov_SC03_119_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaa78c, data, tail11] + - [0xaa78c, data, tail12] - [0xaa7a4, .rodata, ov_SC03_119_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaa7c4, data, tail12] + - [0xaa7c4, data, tail13] - [0xaa844, .rodata, ov_SC03_119_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaa858, data, tail13] + - [0xaa858, data, tail14] - [0xaaa00, .rodata, ov_SC03_119_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaab78, data, tail14] + - [0xaab78, data, tail15] - [0xaac08, .rodata, ov_SC03_119_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaac94, data, tail15] + - [0xaac94, data, tail16] - [0xaacd8, .rodata, ov_SC03_119_jr_8017FB84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xaacf8, data, tail16] + - [0xaacf8, data, tail17] - [0xAC6F4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xAC6F7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_121.yaml b/config/splat.ov_SC03_121.yaml index 02a69c7e0..d14c01fb3 100644 --- a/config/splat.ov_SC03_121.yaml +++ b/config/splat.ov_SC03_121.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_121_after] - [0x2c2f4, c, ov_SC03_121_jr_8015444C] - [0x2cacc, c, ov_SC03_121_jr_80154C24] + - [0x30774, c, ov_SC03_121_jr_801588CC] - [0x31b2c, c, ov_SC03_121_jr_80159C84] - [0x32270, c, ov_SC03_121_jr_8015A3C8] - [0x32cd4, c, ov_SC03_121_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x85084, data, tail6] - [0x850f4, .rodata, ov_SC03_121_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x85118, data, tail7] + - [0x85138, .rodata, ov_SC03_121_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8515c, data, tail8] - [0x851e0, .rodata, ov_SC03_121_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x85214, data, tail8] + - [0x85214, data, tail9] - [0x85218, .rodata, ov_SC03_121_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x85234, data, tail9] + - [0x85234, data, tail10] - [0x85238, .rodata, ov_SC03_121_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x85254, data, tail10] + - [0x85254, data, tail11] - [0x85278, .rodata, ov_SC03_121_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x85294, data, tail11] + - [0x85294, data, tail12] - [0x852ac, .rodata, ov_SC03_121_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x852cc, data, tail12] + - [0x852cc, data, tail13] - [0x8534c, .rodata, ov_SC03_121_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x85360, data, tail13] + - [0x85360, data, tail14] - [0x85508, .rodata, ov_SC03_121_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x85680, data, tail14] + - [0x85680, data, tail15] - [0x85710, .rodata, ov_SC03_121_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8579c, data, tail15] + - [0x8579c, data, tail16] - [0x857b4, .rodata, ov_SC03_121_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x857d4, data, tail16] + - [0x857d4, data, tail17] - [0x86E54, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x86E57] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_124.yaml b/config/splat.ov_SC03_124.yaml index 550f13ea4..15c1169d7 100644 --- a/config/splat.ov_SC03_124.yaml +++ b/config/splat.ov_SC03_124.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_124_after] - [0x2c2f4, c, ov_SC03_124_jr_8015444C] - [0x2cacc, c, ov_SC03_124_jr_80154C24] + - [0x30774, c, ov_SC03_124_jr_801588CC] - [0x31b2c, c, ov_SC03_124_jr_80159C84] - [0x32270, c, ov_SC03_124_jr_8015A3C8] - [0x32cd4, c, ov_SC03_124_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0xb77d8, data, tail6] - [0xb7848, .rodata, ov_SC03_124_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb786c, data, tail7] + - [0xb788c, .rodata, ov_SC03_124_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb78b0, data, tail8] - [0xb7934, .rodata, ov_SC03_124_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7968, data, tail8] + - [0xb7968, data, tail9] - [0xb796c, .rodata, ov_SC03_124_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7988, data, tail9] + - [0xb7988, data, tail10] - [0xb798c, .rodata, ov_SC03_124_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb79a8, data, tail10] + - [0xb79a8, data, tail11] - [0xb79cc, .rodata, ov_SC03_124_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb79e8, data, tail11] + - [0xb79e8, data, tail12] - [0xb7a00, .rodata, ov_SC03_124_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7a20, data, tail12] + - [0xb7a20, data, tail13] - [0xb7aa0, .rodata, ov_SC03_124_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7ab4, data, tail13] + - [0xb7ab4, data, tail14] - [0xb7c5c, .rodata, ov_SC03_124_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7dd4, data, tail14] + - [0xb7dd4, data, tail15] - [0xb7e64, .rodata, ov_SC03_124_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7ef0, data, tail15] + - [0xb7ef0, data, tail16] - [0xBA48C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBA48F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_125.yaml b/config/splat.ov_SC03_125.yaml index ec67308c4..2ab3b8ffc 100644 --- a/config/splat.ov_SC03_125.yaml +++ b/config/splat.ov_SC03_125.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_125_after] - [0x2c2f4, c, ov_SC03_125_jr_8015444C] - [0x2cacc, c, ov_SC03_125_jr_80154C24] + - [0x30774, c, ov_SC03_125_jr_801588CC] - [0x31b2c, c, ov_SC03_125_jr_80159C84] - [0x32270, c, ov_SC03_125_jr_8015A3C8] - [0x32cd4, c, ov_SC03_125_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x9a4c4, data, tail6] - [0x9a534, .rodata, ov_SC03_125_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9a558, data, tail7] + - [0x9a578, .rodata, ov_SC03_125_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9a59c, data, tail8] - [0x9a620, .rodata, ov_SC03_125_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9a654, data, tail8] + - [0x9a654, data, tail9] - [0x9a658, .rodata, ov_SC03_125_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9a674, data, tail9] + - [0x9a674, data, tail10] - [0x9a678, .rodata, ov_SC03_125_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9a694, data, tail10] + - [0x9a694, data, tail11] - [0x9a6b8, .rodata, ov_SC03_125_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9a6d4, data, tail11] + - [0x9a6d4, data, tail12] - [0x9a6ec, .rodata, ov_SC03_125_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9a70c, data, tail12] + - [0x9a70c, data, tail13] - [0x9a78c, .rodata, ov_SC03_125_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9a7a0, data, tail13] + - [0x9a7a0, data, tail14] - [0x9a948, .rodata, ov_SC03_125_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9aac0, data, tail14] + - [0x9aac0, data, tail15] - [0x9ab50, .rodata, ov_SC03_125_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9abdc, data, tail15] + - [0x9abdc, data, tail16] - [0x9abf4, .rodata, ov_SC03_125_jr_8017D604] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ac14, data, tail16] + - [0x9ac14, data, tail17] - [0x9C3E4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9C3E7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC03_126.yaml b/config/splat.ov_SC03_126.yaml index fd659c31c..47242a815 100644 --- a/config/splat.ov_SC03_126.yaml +++ b/config/splat.ov_SC03_126.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC03_126_after] - [0x2c2f4, c, ov_SC03_126_jr_8015444C] - [0x2cacc, c, ov_SC03_126_jr_80154C24] + - [0x30774, c, ov_SC03_126_jr_801588CC] - [0x31b2c, c, ov_SC03_126_jr_80159C84] - [0x32270, c, ov_SC03_126_jr_8015A3C8] - [0x32cd4, c, ov_SC03_126_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x65db0, data, tail6] - [0x65e20, .rodata, ov_SC03_126_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x65e44, data, tail7] + - [0x65e64, .rodata, ov_SC03_126_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x65e88, data, tail8] - [0x65f0c, .rodata, ov_SC03_126_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65f40, data, tail8] + - [0x65f40, data, tail9] - [0x65f44, .rodata, ov_SC03_126_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65f60, data, tail9] + - [0x65f60, data, tail10] - [0x65f64, .rodata, ov_SC03_126_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65f80, data, tail10] + - [0x65f80, data, tail11] - [0x65fa4, .rodata, ov_SC03_126_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65fc0, data, tail11] + - [0x65fc0, data, tail12] - [0x65fd8, .rodata, ov_SC03_126_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65ff8, data, tail12] + - [0x65ff8, data, tail13] - [0x66078, .rodata, ov_SC03_126_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6608c, data, tail13] + - [0x6608c, data, tail14] - [0x66234, .rodata, ov_SC03_126_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x663ac, data, tail14] + - [0x663ac, data, tail15] - [0x6643c, .rodata, ov_SC03_126_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x664c8, data, tail15] + - [0x664c8, data, tail16] - [0x66500, .rodata, ov_SC03_126_jr_8017D5C0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66520, data, tail16] + - [0x66520, data, tail17] - [0x679D4, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x679D5] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_000.yaml b/config/splat.ov_SC04_000.yaml index dbe9caa1a..6d990ec3f 100644 --- a/config/splat.ov_SC04_000.yaml +++ b/config/splat.ov_SC04_000.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_000_after] - [0x2c2f4, c, ov_SC04_000_jr_8015444C] - [0x2cacc, c, ov_SC04_000_jr_80154C24] + - [0x30774, c, ov_SC04_000_jr_801588CC] - [0x31b2c, c, ov_SC04_000_jr_80159C84] - [0x32270, c, ov_SC04_000_jr_8015A3C8] - [0x32cd4, c, ov_SC04_000_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x7fe2c, data, tail6] - [0x7fe9c, .rodata, ov_SC04_000_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7fec0, data, tail7] + - [0x7fee0, .rodata, ov_SC04_000_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7ff04, data, tail8] - [0x7ff88, .rodata, ov_SC04_000_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7ffbc, data, tail8] + - [0x7ffbc, data, tail9] - [0x7ffc0, .rodata, ov_SC04_000_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7ffdc, data, tail9] + - [0x7ffdc, data, tail10] - [0x7ffe0, .rodata, ov_SC04_000_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7fffc, data, tail10] + - [0x7fffc, data, tail11] - [0x80020, .rodata, ov_SC04_000_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8003c, data, tail11] + - [0x8003c, data, tail12] - [0x80054, .rodata, ov_SC04_000_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80074, data, tail12] + - [0x80074, data, tail13] - [0x800f4, .rodata, ov_SC04_000_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80108, data, tail13] + - [0x80108, data, tail14] - [0x802b0, .rodata, ov_SC04_000_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80428, data, tail14] + - [0x80428, data, tail15] - [0x804b8, .rodata, ov_SC04_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80544, data, tail15] + - [0x80544, data, tail16] - [0x8055c, .rodata, ov_SC04_000_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8057c, data, tail16] + - [0x8057c, data, tail17] - [0x82EFC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x82EFF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_002.yaml b/config/splat.ov_SC04_002.yaml index 63892117b..f804f2633 100644 --- a/config/splat.ov_SC04_002.yaml +++ b/config/splat.ov_SC04_002.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_002_after] - [0x2c2f4, c, ov_SC04_002_jr_8015444C] - [0x2cacc, c, ov_SC04_002_jr_80154C24] + - [0x30774, c, ov_SC04_002_jr_801588CC] - [0x31b2c, c, ov_SC04_002_jr_80159C84] - [0x32270, c, ov_SC04_002_jr_8015A3C8] - [0x32cd4, c, ov_SC04_002_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x9717c, data, tail6] - [0x971ec, .rodata, ov_SC04_002_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x97210, data, tail7] + - [0x97230, .rodata, ov_SC04_002_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x97254, data, tail8] - [0x972d8, .rodata, ov_SC04_002_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9730c, data, tail8] + - [0x9730c, data, tail9] - [0x97310, .rodata, ov_SC04_002_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9732c, data, tail9] + - [0x9732c, data, tail10] - [0x97330, .rodata, ov_SC04_002_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9734c, data, tail10] + - [0x9734c, data, tail11] - [0x97370, .rodata, ov_SC04_002_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9738c, data, tail11] + - [0x9738c, data, tail12] - [0x973a4, .rodata, ov_SC04_002_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x973c4, data, tail12] + - [0x973c4, data, tail13] - [0x97444, .rodata, ov_SC04_002_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97458, data, tail13] + - [0x97458, data, tail14] - [0x97600, .rodata, ov_SC04_002_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97778, data, tail14] + - [0x97778, data, tail15] - [0x97808, .rodata, ov_SC04_002_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97894, data, tail15] + - [0x97894, data, tail16] - [0x978ac, .rodata, ov_SC04_002_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x978cc, data, tail16] + - [0x978cc, data, tail17] - [0x995DC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x995DF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_003.yaml b/config/splat.ov_SC04_003.yaml index ad0510a6c..7d9280390 100644 --- a/config/splat.ov_SC04_003.yaml +++ b/config/splat.ov_SC04_003.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_003_after] - [0x2c2f4, c, ov_SC04_003_jr_8015444C] - [0x2cacc, c, ov_SC04_003_jr_80154C24] + - [0x30774, c, ov_SC04_003_jr_801588CC] - [0x31b2c, c, ov_SC04_003_jr_80159C84] - [0x32270, c, ov_SC04_003_jr_8015A3C8] - [0x32cd4, c, ov_SC04_003_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x71df8, data, tail6] - [0x71e68, .rodata, ov_SC04_003_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x71e8c, data, tail7] + - [0x71eac, .rodata, ov_SC04_003_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x71ed0, data, tail8] - [0x71f54, .rodata, ov_SC04_003_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71f88, data, tail8] + - [0x71f88, data, tail9] - [0x71f8c, .rodata, ov_SC04_003_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71fa8, data, tail9] + - [0x71fa8, data, tail10] - [0x71fac, .rodata, ov_SC04_003_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71fc8, data, tail10] + - [0x71fc8, data, tail11] - [0x71fec, .rodata, ov_SC04_003_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72008, data, tail11] + - [0x72008, data, tail12] - [0x72020, .rodata, ov_SC04_003_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72040, data, tail12] + - [0x72040, data, tail13] - [0x720c0, .rodata, ov_SC04_003_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x720d4, data, tail13] + - [0x720d4, data, tail14] - [0x7227c, .rodata, ov_SC04_003_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x723f4, data, tail14] + - [0x723f4, data, tail15] - [0x72484, .rodata, ov_SC04_003_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72510, data, tail15] + - [0x72510, data, tail16] - [0x72528, .rodata, ov_SC04_003_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72548, data, tail16] + - [0x72548, data, tail17] - [0x73A94, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x73A97] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_004.yaml b/config/splat.ov_SC04_004.yaml index 1e947991a..d45a45862 100644 --- a/config/splat.ov_SC04_004.yaml +++ b/config/splat.ov_SC04_004.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_004_after] - [0x2c2f4, c, ov_SC04_004_jr_8015444C] - [0x2cacc, c, ov_SC04_004_jr_80154C24] + - [0x30774, c, ov_SC04_004_jr_801588CC] - [0x31b2c, c, ov_SC04_004_jr_80159C84] - [0x32270, c, ov_SC04_004_jr_8015A3C8] - [0x32cd4, c, ov_SC04_004_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x89bf4, data, tail6] - [0x89c64, .rodata, ov_SC04_004_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x89c88, data, tail7] + - [0x89ca8, .rodata, ov_SC04_004_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x89ccc, data, tail8] - [0x89d50, .rodata, ov_SC04_004_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x89d84, data, tail8] + - [0x89d84, data, tail9] - [0x89d88, .rodata, ov_SC04_004_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x89da4, data, tail9] + - [0x89da4, data, tail10] - [0x89da8, .rodata, ov_SC04_004_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x89dc4, data, tail10] + - [0x89dc4, data, tail11] - [0x89de8, .rodata, ov_SC04_004_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x89e04, data, tail11] + - [0x89e04, data, tail12] - [0x89e1c, .rodata, ov_SC04_004_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x89e3c, data, tail12] + - [0x89e3c, data, tail13] - [0x89ebc, .rodata, ov_SC04_004_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x89ed0, data, tail13] + - [0x89ed0, data, tail14] - [0x8a078, .rodata, ov_SC04_004_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8a1f0, data, tail14] + - [0x8a1f0, data, tail15] - [0x8a280, .rodata, ov_SC04_004_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8a30c, data, tail15] + - [0x8a30c, data, tail16] - [0x8BAFC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8BAFF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_005.yaml b/config/splat.ov_SC04_005.yaml index a4fb7398c..363c39e32 100644 --- a/config/splat.ov_SC04_005.yaml +++ b/config/splat.ov_SC04_005.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_005_after] - [0x2c2f4, c, ov_SC04_005_jr_8015444C] - [0x2cacc, c, ov_SC04_005_jr_80154C24] + - [0x30774, c, ov_SC04_005_jr_801588CC] - [0x31b2c, c, ov_SC04_005_jr_80159C84] - [0x32270, c, ov_SC04_005_jr_8015A3C8] - [0x32cd4, c, ov_SC04_005_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x97db8, data, tail6] - [0x97e28, .rodata, ov_SC04_005_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x97e4c, data, tail7] + - [0x97e6c, .rodata, ov_SC04_005_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x97e90, data, tail8] - [0x97f14, .rodata, ov_SC04_005_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97f48, data, tail8] + - [0x97f48, data, tail9] - [0x97f4c, .rodata, ov_SC04_005_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97f68, data, tail9] + - [0x97f68, data, tail10] - [0x97f6c, .rodata, ov_SC04_005_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97f88, data, tail10] + - [0x97f88, data, tail11] - [0x97fac, .rodata, ov_SC04_005_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x97fc8, data, tail11] + - [0x97fc8, data, tail12] - [0x97fe0, .rodata, ov_SC04_005_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x98000, data, tail12] + - [0x98000, data, tail13] - [0x98080, .rodata, ov_SC04_005_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x98094, data, tail13] + - [0x98094, data, tail14] - [0x9823c, .rodata, ov_SC04_005_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x983b4, data, tail14] + - [0x983b4, data, tail15] - [0x98444, .rodata, ov_SC04_005_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x984d0, data, tail15] + - [0x984d0, data, tail16] - [0x984e8, .rodata, ov_SC04_005_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x98508, data, tail16] + - [0x98508, data, tail17] - [0x9A1D4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9A1D7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_006.yaml b/config/splat.ov_SC04_006.yaml index f0e7f7ad5..c0e314793 100644 --- a/config/splat.ov_SC04_006.yaml +++ b/config/splat.ov_SC04_006.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_006_after] - [0x2c2f4, c, ov_SC04_006_jr_8015444C] - [0x2cacc, c, ov_SC04_006_jr_80154C24] + - [0x30774, c, ov_SC04_006_jr_801588CC] - [0x31b2c, c, ov_SC04_006_jr_80159C84] - [0x32270, c, ov_SC04_006_jr_8015A3C8] - [0x32cd4, c, ov_SC04_006_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x74060, data, tail6] - [0x740d0, .rodata, ov_SC04_006_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x740f4, data, tail7] + - [0x74114, .rodata, ov_SC04_006_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x74138, data, tail8] - [0x741bc, .rodata, ov_SC04_006_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x741f0, data, tail8] + - [0x741f0, data, tail9] - [0x741f4, .rodata, ov_SC04_006_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x74210, data, tail9] + - [0x74210, data, tail10] - [0x74214, .rodata, ov_SC04_006_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x74230, data, tail10] + - [0x74230, data, tail11] - [0x74254, .rodata, ov_SC04_006_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x74270, data, tail11] + - [0x74270, data, tail12] - [0x74288, .rodata, ov_SC04_006_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x742a8, data, tail12] + - [0x742a8, data, tail13] - [0x74328, .rodata, ov_SC04_006_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7433c, data, tail13] + - [0x7433c, data, tail14] - [0x744e4, .rodata, ov_SC04_006_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7465c, data, tail14] + - [0x7465c, data, tail15] - [0x746ec, .rodata, ov_SC04_006_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x74778, data, tail15] + - [0x74778, data, tail16] - [0x74790, .rodata, ov_SC04_006_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x747b0, data, tail16] + - [0x747b0, data, tail17] - [0x75C74, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x75C77] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_007.yaml b/config/splat.ov_SC04_007.yaml index d6c5eac92..4c6cdd8b0 100644 --- a/config/splat.ov_SC04_007.yaml +++ b/config/splat.ov_SC04_007.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_007_after] - [0x2c2f4, c, ov_SC04_007_jr_8015444C] - [0x2cacc, c, ov_SC04_007_jr_80154C24] + - [0x30774, c, ov_SC04_007_jr_801588CC] - [0x31b2c, c, ov_SC04_007_jr_80159C84] - [0x32270, c, ov_SC04_007_jr_8015A3C8] - [0x32cd4, c, ov_SC04_007_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x8b61c, data, tail6] - [0x8b68c, .rodata, ov_SC04_007_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8b6b0, data, tail7] + - [0x8b6d0, .rodata, ov_SC04_007_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8b6f4, data, tail8] - [0x8b778, .rodata, ov_SC04_007_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8b7ac, data, tail8] + - [0x8b7ac, data, tail9] - [0x8b7b0, .rodata, ov_SC04_007_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8b7cc, data, tail9] + - [0x8b7cc, data, tail10] - [0x8b7d0, .rodata, ov_SC04_007_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8b7ec, data, tail10] + - [0x8b7ec, data, tail11] - [0x8b810, .rodata, ov_SC04_007_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8b82c, data, tail11] + - [0x8b82c, data, tail12] - [0x8b844, .rodata, ov_SC04_007_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8b864, data, tail12] + - [0x8b864, data, tail13] - [0x8b8e4, .rodata, ov_SC04_007_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8b8f8, data, tail13] + - [0x8b8f8, data, tail14] - [0x8baa0, .rodata, ov_SC04_007_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8bc18, data, tail14] + - [0x8bc18, data, tail15] - [0x8bca8, .rodata, ov_SC04_007_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8bd34, data, tail15] + - [0x8bd34, data, tail16] - [0x8bd4c, .rodata, ov_SC04_007_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8bd6c, data, tail16] + - [0x8bd6c, data, tail17] - [0x8DA34, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8DA37] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_008.yaml b/config/splat.ov_SC04_008.yaml index 04fa84179..dccbe26ce 100644 --- a/config/splat.ov_SC04_008.yaml +++ b/config/splat.ov_SC04_008.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_008_after] - [0x2c2f4, c, ov_SC04_008_jr_8015444C] - [0x2cacc, c, ov_SC04_008_jr_80154C24] + - [0x30774, c, ov_SC04_008_jr_801588CC] - [0x31b2c, c, ov_SC04_008_jr_80159C84] - [0x32cd4, c, ov_SC04_008_jr_8015AE2C] - [0x341d4, c, ov_SC04_008_jr_8015C32C] @@ -122,20 +123,22 @@ segments: - [0x68304, data, tail6] - [0x68374, .rodata, ov_SC04_008_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x68398, data, tail7] + - [0x683b8, .rodata, ov_SC04_008_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x683dc, data, tail8] - [0x68460, .rodata, ov_SC04_008_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x68494, data, tail8] + - [0x68494, data, tail9] - [0x684b8, .rodata, ov_SC04_008_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x684d4, data, tail9] + - [0x684d4, data, tail10] - [0x684f8, .rodata, ov_SC04_008_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x68514, data, tail10] + - [0x68514, data, tail11] - [0x6852c, .rodata, ov_SC04_008_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6854c, data, tail11] + - [0x6854c, data, tail12] - [0x685cc, .rodata, ov_SC04_008_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x685e0, data, tail12] + - [0x685e0, data, tail13] - [0x68788, .rodata, ov_SC04_008_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x68900, data, tail13] + - [0x68900, data, tail14] - [0x68990, .rodata, ov_SC04_008_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x68a1c, data, tail14] + - [0x68a1c, data, tail15] - [0x6B364, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6B367] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_009.yaml b/config/splat.ov_SC04_009.yaml index 0b27ef5c2..5a7ec0b38 100644 --- a/config/splat.ov_SC04_009.yaml +++ b/config/splat.ov_SC04_009.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_009_after] - [0x2c2f4, c, ov_SC04_009_jr_8015444C] - [0x2cacc, c, ov_SC04_009_jr_80154C24] + - [0x30774, c, ov_SC04_009_jr_801588CC] - [0x31b2c, c, ov_SC04_009_jr_80159C84] - [0x32270, c, ov_SC04_009_jr_8015A3C8] - [0x32cd4, c, ov_SC04_009_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x6e518, data, tail6] - [0x6e588, .rodata, ov_SC04_009_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6e5ac, data, tail7] + - [0x6e5cc, .rodata, ov_SC04_009_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6e5f0, data, tail8] - [0x6e674, .rodata, ov_SC04_009_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e6a8, data, tail8] + - [0x6e6a8, data, tail9] - [0x6e6ac, .rodata, ov_SC04_009_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e6c8, data, tail9] + - [0x6e6c8, data, tail10] - [0x6e6cc, .rodata, ov_SC04_009_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e6e8, data, tail10] + - [0x6e6e8, data, tail11] - [0x6e70c, .rodata, ov_SC04_009_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e728, data, tail11] + - [0x6e728, data, tail12] - [0x6e740, .rodata, ov_SC04_009_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e760, data, tail12] + - [0x6e760, data, tail13] - [0x6e7e0, .rodata, ov_SC04_009_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6e7f4, data, tail13] + - [0x6e7f4, data, tail14] - [0x6e99c, .rodata, ov_SC04_009_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6eb14, data, tail14] + - [0x6eb14, data, tail15] - [0x6eba4, .rodata, ov_SC04_009_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6ec30, data, tail15] + - [0x6ec30, data, tail16] - [0x6ec48, .rodata, ov_SC04_009_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6ec68, data, tail16] + - [0x6ec68, data, tail17] - [0x70114, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x70117] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_010.yaml b/config/splat.ov_SC04_010.yaml index 2da9aff33..19b839663 100644 --- a/config/splat.ov_SC04_010.yaml +++ b/config/splat.ov_SC04_010.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_010_after] - [0x2c2f4, c, ov_SC04_010_jr_8015444C] - [0x2cacc, c, ov_SC04_010_jr_80154C24] + - [0x30774, c, ov_SC04_010_jr_801588CC] - [0x31b2c, c, ov_SC04_010_jr_80159C84] - [0x32270, c, ov_SC04_010_jr_8015A3C8] - [0x32cd4, c, ov_SC04_010_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x659a4, data, tail6] - [0x65a14, .rodata, ov_SC04_010_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x65a38, data, tail7] + - [0x65a58, .rodata, ov_SC04_010_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x65a7c, data, tail8] - [0x65b00, .rodata, ov_SC04_010_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65b34, data, tail8] + - [0x65b34, data, tail9] - [0x65b38, .rodata, ov_SC04_010_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65b54, data, tail9] + - [0x65b54, data, tail10] - [0x65b58, .rodata, ov_SC04_010_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65b74, data, tail10] + - [0x65b74, data, tail11] - [0x65b98, .rodata, ov_SC04_010_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65bb4, data, tail11] + - [0x65bb4, data, tail12] - [0x65bcc, .rodata, ov_SC04_010_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65bec, data, tail12] + - [0x65bec, data, tail13] - [0x65c6c, .rodata, ov_SC04_010_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65c80, data, tail13] + - [0x65c80, data, tail14] - [0x65e28, .rodata, ov_SC04_010_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65fa0, data, tail14] + - [0x65fa0, data, tail15] - [0x66030, .rodata, ov_SC04_010_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x660bc, data, tail15] + - [0x660bc, data, tail16] - [0x660d4, .rodata, ov_SC04_010_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x660f4, data, tail16] + - [0x660f4, data, tail17] - [0x675EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x675EF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_011.yaml b/config/splat.ov_SC04_011.yaml index 1eb307c1b..c43831653 100644 --- a/config/splat.ov_SC04_011.yaml +++ b/config/splat.ov_SC04_011.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_011_after] - [0x2c2f4, c, ov_SC04_011_jr_8015444C] - [0x2cacc, c, ov_SC04_011_jr_80154C24] + - [0x30774, c, ov_SC04_011_jr_801588CC] - [0x31b2c, c, ov_SC04_011_jr_80159C84] - [0x32270, c, ov_SC04_011_jr_8015A3C8] - [0x32cd4, c, ov_SC04_011_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xc4f40, data, tail6] - [0xc4fb0, .rodata, ov_SC04_011_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc4fd4, data, tail7] + - [0xc4ff4, .rodata, ov_SC04_011_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc5018, data, tail8] - [0xc509c, .rodata, ov_SC04_011_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc50d0, data, tail8] + - [0xc50d0, data, tail9] - [0xc50d4, .rodata, ov_SC04_011_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc50f0, data, tail9] + - [0xc50f0, data, tail10] - [0xc50f4, .rodata, ov_SC04_011_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc5110, data, tail10] + - [0xc5110, data, tail11] - [0xc5134, .rodata, ov_SC04_011_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc5150, data, tail11] + - [0xc5150, data, tail12] - [0xc5168, .rodata, ov_SC04_011_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc5188, data, tail12] + - [0xc5188, data, tail13] - [0xc5208, .rodata, ov_SC04_011_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc521c, data, tail13] + - [0xc521c, data, tail14] - [0xc53c4, .rodata, ov_SC04_011_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc553c, data, tail14] + - [0xc553c, data, tail15] - [0xc55cc, .rodata, ov_SC04_011_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc5658, data, tail15] + - [0xc5658, data, tail16] - [0xc57a8, .rodata, ov_SC04_011_jr_8017D494] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc57c8, data, tail16] + - [0xc57c8, data, tail17] - [0xC9554, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC9557] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_012.yaml b/config/splat.ov_SC04_012.yaml index c4ccf4e59..c4b3f2b12 100644 --- a/config/splat.ov_SC04_012.yaml +++ b/config/splat.ov_SC04_012.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_012_after] - [0x2c2f4, c, ov_SC04_012_jr_8015444C] - [0x2cacc, c, ov_SC04_012_jr_80154C24] + - [0x30774, c, ov_SC04_012_jr_801588CC] - [0x31b2c, c, ov_SC04_012_jr_80159C84] - [0x32270, c, ov_SC04_012_jr_8015A3C8] - [0x32cd4, c, ov_SC04_012_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x68084, data, tail6] - [0x680f4, .rodata, ov_SC04_012_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x68118, data, tail7] + - [0x68138, .rodata, ov_SC04_012_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6815c, data, tail8] - [0x681e0, .rodata, ov_SC04_012_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x68214, data, tail8] + - [0x68214, data, tail9] - [0x68218, .rodata, ov_SC04_012_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x68234, data, tail9] + - [0x68234, data, tail10] - [0x68238, .rodata, ov_SC04_012_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x68254, data, tail10] + - [0x68254, data, tail11] - [0x68278, .rodata, ov_SC04_012_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x68294, data, tail11] + - [0x68294, data, tail12] - [0x682ac, .rodata, ov_SC04_012_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x682cc, data, tail12] + - [0x682cc, data, tail13] - [0x6834c, .rodata, ov_SC04_012_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x68360, data, tail13] + - [0x68360, data, tail14] - [0x68508, .rodata, ov_SC04_012_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x68680, data, tail14] + - [0x68680, data, tail15] - [0x68710, .rodata, ov_SC04_012_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6879c, data, tail15] + - [0x6879c, data, tail16] - [0x6B0E4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6B0E7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_015.yaml b/config/splat.ov_SC04_015.yaml index fdddc61e8..51127837f 100644 --- a/config/splat.ov_SC04_015.yaml +++ b/config/splat.ov_SC04_015.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_015_after] - [0x2c2f4, c, ov_SC04_015_jr_8015444C] - [0x2cacc, c, ov_SC04_015_jr_80154C24] + - [0x30774, c, ov_SC04_015_jr_801588CC] - [0x31b2c, c, ov_SC04_015_jr_80159C84] - [0x32270, c, ov_SC04_015_jr_8015A3C8] - [0x32cd4, c, ov_SC04_015_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x9ed1c, data, tail6] - [0x9ed8c, .rodata, ov_SC04_015_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9edb0, data, tail7] + - [0x9edd0, .rodata, ov_SC04_015_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9edf4, data, tail8] - [0x9ee78, .rodata, ov_SC04_015_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9eeac, data, tail8] + - [0x9eeac, data, tail9] - [0x9eeb0, .rodata, ov_SC04_015_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9eecc, data, tail9] + - [0x9eecc, data, tail10] - [0x9eed0, .rodata, ov_SC04_015_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9eeec, data, tail10] + - [0x9eeec, data, tail11] - [0x9ef10, .rodata, ov_SC04_015_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ef2c, data, tail11] + - [0x9ef2c, data, tail12] - [0x9ef44, .rodata, ov_SC04_015_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9ef64, data, tail12] + - [0x9ef64, data, tail13] - [0x9efe4, .rodata, ov_SC04_015_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9eff8, data, tail13] + - [0x9eff8, data, tail14] - [0x9f1a0, .rodata, ov_SC04_015_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9f318, data, tail14] + - [0x9f318, data, tail15] - [0x9f3a8, .rodata, ov_SC04_015_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9f434, data, tail15] + - [0x9f434, data, tail16] - [0xA1284, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA1287] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_016.yaml b/config/splat.ov_SC04_016.yaml index 08764e35a..cfd671547 100644 --- a/config/splat.ov_SC04_016.yaml +++ b/config/splat.ov_SC04_016.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_016_after] - [0x2c2f4, c, ov_SC04_016_jr_8015444C] - [0x2cacc, c, ov_SC04_016_jr_80154C24] + - [0x30774, c, ov_SC04_016_jr_801588CC] - [0x31b2c, c, ov_SC04_016_jr_80159C84] - [0x32270, c, ov_SC04_016_jr_8015A3C8] - [0x32cd4, c, ov_SC04_016_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x7ced4, data, tail6] - [0x7cf44, .rodata, ov_SC04_016_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7cf68, data, tail7] + - [0x7cf88, .rodata, ov_SC04_016_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7cfac, data, tail8] - [0x7d030, .rodata, ov_SC04_016_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7d064, data, tail8] + - [0x7d064, data, tail9] - [0x7d068, .rodata, ov_SC04_016_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7d084, data, tail9] + - [0x7d084, data, tail10] - [0x7d088, .rodata, ov_SC04_016_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7d0a4, data, tail10] + - [0x7d0a4, data, tail11] - [0x7d0c8, .rodata, ov_SC04_016_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7d0e4, data, tail11] + - [0x7d0e4, data, tail12] - [0x7d0fc, .rodata, ov_SC04_016_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7d11c, data, tail12] + - [0x7d11c, data, tail13] - [0x7d19c, .rodata, ov_SC04_016_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7d1b0, data, tail13] + - [0x7d1b0, data, tail14] - [0x7d358, .rodata, ov_SC04_016_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7d4d0, data, tail14] + - [0x7d4d0, data, tail15] - [0x7d560, .rodata, ov_SC04_016_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7d5ec, data, tail15] + - [0x7d5ec, data, tail16] - [0x7d604, .rodata, ov_SC04_016_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7d624, data, tail16] + - [0x7d624, data, tail17] - [0x84184, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x84187] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_018.yaml b/config/splat.ov_SC04_018.yaml index 5903f76f8..ba24a1972 100644 --- a/config/splat.ov_SC04_018.yaml +++ b/config/splat.ov_SC04_018.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_018_after] - [0x2c2f4, c, ov_SC04_018_jr_8015444C] - [0x2cacc, c, ov_SC04_018_jr_80154C24] + - [0x30774, c, ov_SC04_018_jr_801588CC] - [0x31b2c, c, ov_SC04_018_jr_80159C84] - [0x32270, c, ov_SC04_018_jr_8015A3C8] - [0x32cd4, c, ov_SC04_018_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0xbccec, data, tail6] - [0xbcd5c, .rodata, ov_SC04_018_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbcd80, data, tail7] + - [0xbcda0, .rodata, ov_SC04_018_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbcdc4, data, tail8] - [0xbce48, .rodata, ov_SC04_018_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbce7c, data, tail8] + - [0xbce7c, data, tail9] - [0xbce80, .rodata, ov_SC04_018_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbce9c, data, tail9] + - [0xbce9c, data, tail10] - [0xbcea0, .rodata, ov_SC04_018_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbcebc, data, tail10] + - [0xbcebc, data, tail11] - [0xbcee0, .rodata, ov_SC04_018_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbcefc, data, tail11] + - [0xbcefc, data, tail12] - [0xbcf14, .rodata, ov_SC04_018_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbcf34, data, tail12] + - [0xbcf34, data, tail13] - [0xbcfb4, .rodata, ov_SC04_018_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbcfc8, data, tail13] + - [0xbcfc8, data, tail14] - [0xbd170, .rodata, ov_SC04_018_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbd2e8, data, tail14] + - [0xbd2e8, data, tail15] - [0xbd378, .rodata, ov_SC04_018_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbd404, data, tail15] + - [0xbd404, data, tail16] - [0xBF9CC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBF9CF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_019.yaml b/config/splat.ov_SC04_019.yaml index 4a85f72c2..6c0de77ca 100644 --- a/config/splat.ov_SC04_019.yaml +++ b/config/splat.ov_SC04_019.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_019_after] - [0x2c2f4, c, ov_SC04_019_jr_8015444C] - [0x2cacc, c, ov_SC04_019_jr_80154C24] + - [0x30774, c, ov_SC04_019_jr_801588CC] - [0x31b2c, c, ov_SC04_019_jr_80159C84] - [0x32270, c, ov_SC04_019_jr_8015A3C8] - [0x32cd4, c, ov_SC04_019_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0xbccec, data, tail6] - [0xbcd5c, .rodata, ov_SC04_019_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbcd80, data, tail7] + - [0xbcda0, .rodata, ov_SC04_019_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbcdc4, data, tail8] - [0xbce48, .rodata, ov_SC04_019_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbce7c, data, tail8] + - [0xbce7c, data, tail9] - [0xbce80, .rodata, ov_SC04_019_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbce9c, data, tail9] + - [0xbce9c, data, tail10] - [0xbcea0, .rodata, ov_SC04_019_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbcebc, data, tail10] + - [0xbcebc, data, tail11] - [0xbcee0, .rodata, ov_SC04_019_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbcefc, data, tail11] + - [0xbcefc, data, tail12] - [0xbcf14, .rodata, ov_SC04_019_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbcf34, data, tail12] + - [0xbcf34, data, tail13] - [0xbcfb4, .rodata, ov_SC04_019_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbcfc8, data, tail13] + - [0xbcfc8, data, tail14] - [0xbd170, .rodata, ov_SC04_019_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbd2e8, data, tail14] + - [0xbd2e8, data, tail15] - [0xbd378, .rodata, ov_SC04_019_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbd404, data, tail15] + - [0xbd404, data, tail16] - [0xBF9CC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBF9CF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_020.yaml b/config/splat.ov_SC04_020.yaml index bc805369d..34567556b 100644 --- a/config/splat.ov_SC04_020.yaml +++ b/config/splat.ov_SC04_020.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_020_after] - [0x2c2f4, c, ov_SC04_020_jr_8015444C] - [0x2cacc, c, ov_SC04_020_jr_80154C24] + - [0x30774, c, ov_SC04_020_jr_801588CC] - [0x31b2c, c, ov_SC04_020_jr_80159C84] - [0x32270, c, ov_SC04_020_jr_8015A3C8] - [0x32cd4, c, ov_SC04_020_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x92714, data, tail6] - [0x92784, .rodata, ov_SC04_020_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x927a8, data, tail7] + - [0x927c8, .rodata, ov_SC04_020_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x927ec, data, tail8] - [0x92870, .rodata, ov_SC04_020_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x928a4, data, tail8] + - [0x928a4, data, tail9] - [0x928a8, .rodata, ov_SC04_020_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x928c4, data, tail9] + - [0x928c4, data, tail10] - [0x928c8, .rodata, ov_SC04_020_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x928e4, data, tail10] + - [0x928e4, data, tail11] - [0x92908, .rodata, ov_SC04_020_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x92924, data, tail11] + - [0x92924, data, tail12] - [0x9293c, .rodata, ov_SC04_020_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9295c, data, tail12] + - [0x9295c, data, tail13] - [0x929dc, .rodata, ov_SC04_020_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x929f0, data, tail13] + - [0x929f0, data, tail14] - [0x92b98, .rodata, ov_SC04_020_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x92d10, data, tail14] + - [0x92d10, data, tail15] - [0x92da0, .rodata, ov_SC04_020_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x92e2c, data, tail15] + - [0x92e2c, data, tail16] - [0x92e44, .rodata, ov_SC04_020_jr_8017D604] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x92e64, data, tail16] + - [0x92e64, data, tail17] - [0x94654, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x94657] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC04_021.yaml b/config/splat.ov_SC04_021.yaml index b46eeed91..36dfd61a5 100644 --- a/config/splat.ov_SC04_021.yaml +++ b/config/splat.ov_SC04_021.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC04_021_after] - [0x2c2f4, c, ov_SC04_021_jr_8015444C] - [0x2cacc, c, ov_SC04_021_jr_80154C24] + - [0x30774, c, ov_SC04_021_jr_801588CC] - [0x31b2c, c, ov_SC04_021_jr_80159C84] - [0x32270, c, ov_SC04_021_jr_8015A3C8] - [0x32cd4, c, ov_SC04_021_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x65db0, data, tail6] - [0x65e20, .rodata, ov_SC04_021_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x65e44, data, tail7] + - [0x65e64, .rodata, ov_SC04_021_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x65e88, data, tail8] - [0x65f0c, .rodata, ov_SC04_021_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65f40, data, tail8] + - [0x65f40, data, tail9] - [0x65f44, .rodata, ov_SC04_021_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65f60, data, tail9] + - [0x65f60, data, tail10] - [0x65f64, .rodata, ov_SC04_021_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65f80, data, tail10] + - [0x65f80, data, tail11] - [0x65fa4, .rodata, ov_SC04_021_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65fc0, data, tail11] + - [0x65fc0, data, tail12] - [0x65fd8, .rodata, ov_SC04_021_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65ff8, data, tail12] + - [0x65ff8, data, tail13] - [0x66078, .rodata, ov_SC04_021_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6608c, data, tail13] + - [0x6608c, data, tail14] - [0x66234, .rodata, ov_SC04_021_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x663ac, data, tail14] + - [0x663ac, data, tail15] - [0x6643c, .rodata, ov_SC04_021_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x664c8, data, tail15] + - [0x664c8, data, tail16] - [0x66500, .rodata, ov_SC04_021_jr_8017D5C0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66520, data, tail16] + - [0x66520, data, tail17] - [0x679D4, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x679D5] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_000.yaml b/config/splat.ov_SC05_000.yaml index 5d93e92c1..c934a3b52 100644 --- a/config/splat.ov_SC05_000.yaml +++ b/config/splat.ov_SC05_000.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_000_after] - [0x2c2f4, c, ov_SC05_000_jr_8015444C] - [0x2cacc, c, ov_SC05_000_jr_80154C24] + - [0x30774, c, ov_SC05_000_jr_801588CC] - [0x31b2c, c, ov_SC05_000_jr_80159C84] - [0x32270, c, ov_SC05_000_jr_8015A3C8] - [0x32cd4, c, ov_SC05_000_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x70f00, data, tail6] - [0x70f70, .rodata, ov_SC05_000_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x70f94, data, tail7] + - [0x70fb4, .rodata, ov_SC05_000_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x70fd8, data, tail8] - [0x7105c, .rodata, ov_SC05_000_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71090, data, tail8] + - [0x71090, data, tail9] - [0x71094, .rodata, ov_SC05_000_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x710b0, data, tail9] + - [0x710b0, data, tail10] - [0x710b4, .rodata, ov_SC05_000_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x710d0, data, tail10] + - [0x710d0, data, tail11] - [0x710f4, .rodata, ov_SC05_000_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71110, data, tail11] + - [0x71110, data, tail12] - [0x71128, .rodata, ov_SC05_000_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71148, data, tail12] + - [0x71148, data, tail13] - [0x711c8, .rodata, ov_SC05_000_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x711dc, data, tail13] + - [0x711dc, data, tail14] - [0x71384, .rodata, ov_SC05_000_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x714fc, data, tail14] + - [0x714fc, data, tail15] - [0x7158c, .rodata, ov_SC05_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71618, data, tail15] + - [0x71618, data, tail16] - [0x71630, .rodata, ov_SC05_000_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71650, data, tail16] + - [0x71650, data, tail17] - [0x72AFC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x72AFF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_001.yaml b/config/splat.ov_SC05_001.yaml index 0b0363290..093e610dd 100644 --- a/config/splat.ov_SC05_001.yaml +++ b/config/splat.ov_SC05_001.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_001_after] - [0x2c2f4, c, ov_SC05_001_jr_8015444C] - [0x2cacc, c, ov_SC05_001_jr_80154C24] + - [0x30774, c, ov_SC05_001_jr_801588CC] - [0x31b2c, c, ov_SC05_001_jr_80159C84] - [0x32270, c, ov_SC05_001_jr_8015A3C8] - [0x32cd4, c, ov_SC05_001_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x8beb4, data, tail6] - [0x8bf24, .rodata, ov_SC05_001_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8bf48, data, tail7] + - [0x8bf68, .rodata, ov_SC05_001_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8bf8c, data, tail8] - [0x8c010, .rodata, ov_SC05_001_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8c044, data, tail8] + - [0x8c044, data, tail9] - [0x8c048, .rodata, ov_SC05_001_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8c064, data, tail9] + - [0x8c064, data, tail10] - [0x8c068, .rodata, ov_SC05_001_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8c084, data, tail10] + - [0x8c084, data, tail11] - [0x8c0a8, .rodata, ov_SC05_001_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8c0c4, data, tail11] + - [0x8c0c4, data, tail12] - [0x8c0dc, .rodata, ov_SC05_001_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8c0fc, data, tail12] + - [0x8c0fc, data, tail13] - [0x8c17c, .rodata, ov_SC05_001_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8c190, data, tail13] + - [0x8c190, data, tail14] - [0x8c338, .rodata, ov_SC05_001_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8c4b0, data, tail14] + - [0x8c4b0, data, tail15] - [0x8c540, .rodata, ov_SC05_001_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8c5cc, data, tail15] + - [0x8c5cc, data, tail16] - [0x8c5e4, .rodata, ov_SC05_001_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8c604, data, tail16] + - [0x8c604, data, tail17] - [0x8DEAC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8DEAF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_002.yaml b/config/splat.ov_SC05_002.yaml index ec0b5edde..ddeadf5a6 100644 --- a/config/splat.ov_SC05_002.yaml +++ b/config/splat.ov_SC05_002.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_002_after] - [0x2c2f4, c, ov_SC05_002_jr_8015444C] - [0x2cacc, c, ov_SC05_002_jr_80154C24] + - [0x30774, c, ov_SC05_002_jr_801588CC] - [0x31b2c, c, ov_SC05_002_jr_80159C84] - [0x32270, c, ov_SC05_002_jr_8015A3C8] - [0x32cd4, c, ov_SC05_002_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x76260, data, tail6] - [0x762d0, .rodata, ov_SC05_002_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x762f4, data, tail7] + - [0x76314, .rodata, ov_SC05_002_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x76338, data, tail8] - [0x763bc, .rodata, ov_SC05_002_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x763f0, data, tail8] + - [0x763f0, data, tail9] - [0x763f4, .rodata, ov_SC05_002_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x76410, data, tail9] + - [0x76410, data, tail10] - [0x76414, .rodata, ov_SC05_002_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x76430, data, tail10] + - [0x76430, data, tail11] - [0x76454, .rodata, ov_SC05_002_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x76470, data, tail11] + - [0x76470, data, tail12] - [0x76488, .rodata, ov_SC05_002_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x764a8, data, tail12] + - [0x764a8, data, tail13] - [0x76528, .rodata, ov_SC05_002_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7653c, data, tail13] + - [0x7653c, data, tail14] - [0x766e4, .rodata, ov_SC05_002_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7685c, data, tail14] + - [0x7685c, data, tail15] - [0x768ec, .rodata, ov_SC05_002_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x76978, data, tail15] + - [0x76978, data, tail16] - [0x76990, .rodata, ov_SC05_002_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x769b0, data, tail16] + - [0x769b0, data, tail17] - [0x77E64, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x77E67] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_003.yaml b/config/splat.ov_SC05_003.yaml index b40a1f437..b3ec88f93 100644 --- a/config/splat.ov_SC05_003.yaml +++ b/config/splat.ov_SC05_003.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_003_after] - [0x2c2f4, c, ov_SC05_003_jr_8015444C] - [0x2cacc, c, ov_SC05_003_jr_80154C24] + - [0x30774, c, ov_SC05_003_jr_801588CC] - [0x31b2c, c, ov_SC05_003_jr_80159C84] - [0x32270, c, ov_SC05_003_jr_8015A3C8] - [0x32cd4, c, ov_SC05_003_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x82d5c, data, tail6] - [0x82dcc, .rodata, ov_SC05_003_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x82df0, data, tail7] + - [0x82e10, .rodata, ov_SC05_003_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x82e34, data, tail8] - [0x82eb8, .rodata, ov_SC05_003_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x82eec, data, tail8] + - [0x82eec, data, tail9] - [0x82ef0, .rodata, ov_SC05_003_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x82f0c, data, tail9] + - [0x82f0c, data, tail10] - [0x82f10, .rodata, ov_SC05_003_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x82f2c, data, tail10] + - [0x82f2c, data, tail11] - [0x82f50, .rodata, ov_SC05_003_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x82f6c, data, tail11] + - [0x82f6c, data, tail12] - [0x82f84, .rodata, ov_SC05_003_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x82fa4, data, tail12] + - [0x82fa4, data, tail13] - [0x83024, .rodata, ov_SC05_003_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x83038, data, tail13] + - [0x83038, data, tail14] - [0x831e0, .rodata, ov_SC05_003_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x83358, data, tail14] + - [0x83358, data, tail15] - [0x833e8, .rodata, ov_SC05_003_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x83474, data, tail15] + - [0x83474, data, tail16] - [0x8348c, .rodata, ov_SC05_003_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x834ac, data, tail16] + - [0x834ac, data, tail17] - [0x84974, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x84977] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_004.yaml b/config/splat.ov_SC05_004.yaml index c28f9fe24..bd4cf508f 100644 --- a/config/splat.ov_SC05_004.yaml +++ b/config/splat.ov_SC05_004.yaml @@ -101,6 +101,7 @@ segments: - [0x1d64c, c, ov_SC05_004_after] - [0x2c2f4, c, ov_SC05_004_jr_8015444C] - [0x2cacc, c, ov_SC05_004_jr_80154C24] + - [0x30774, c, ov_SC05_004_jr_801588CC] - [0x31b2c, c, ov_SC05_004_jr_80159C84] - [0x32270, c, ov_SC05_004_jr_8015A3C8] - [0x32cd4, c, ov_SC05_004_jr_8015AE2C] @@ -121,24 +122,26 @@ segments: - [0x75350, data, tail5] - [0x753c0, .rodata, ov_SC05_004_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x753e4, data, tail6] + - [0x75404, .rodata, ov_SC05_004_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x75428, data, tail7] - [0x754ac, .rodata, ov_SC05_004_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x754e0, data, tail7] + - [0x754e0, data, tail8] - [0x754e4, .rodata, ov_SC05_004_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75500, data, tail8] + - [0x75500, data, tail9] - [0x75504, .rodata, ov_SC05_004_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75520, data, tail9] + - [0x75520, data, tail10] - [0x75544, .rodata, ov_SC05_004_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75560, data, tail10] + - [0x75560, data, tail11] - [0x75578, .rodata, ov_SC05_004_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75598, data, tail11] + - [0x75598, data, tail12] - [0x75618, .rodata, ov_SC05_004_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7562c, data, tail12] + - [0x7562c, data, tail13] - [0x757d4, .rodata, ov_SC05_004_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7594c, data, tail13] + - [0x7594c, data, tail14] - [0x759dc, .rodata, ov_SC05_004_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75a68, data, tail14] + - [0x75a68, data, tail15] - [0x75a80, .rodata, ov_SC05_004_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75aa0, data, tail15] + - [0x75aa0, data, tail16] - [0x771CC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x771CF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_005.yaml b/config/splat.ov_SC05_005.yaml index 8bb954d18..a6ade2699 100644 --- a/config/splat.ov_SC05_005.yaml +++ b/config/splat.ov_SC05_005.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_005_after] - [0x2c2f4, c, ov_SC05_005_jr_8015444C] - [0x2cacc, c, ov_SC05_005_jr_80154C24] + - [0x30774, c, ov_SC05_005_jr_801588CC] - [0x31b2c, c, ov_SC05_005_jr_80159C84] - [0x32270, c, ov_SC05_005_jr_8015A3C8] - [0x32cd4, c, ov_SC05_005_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x88038, data, tail6] - [0x880a8, .rodata, ov_SC05_005_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x880cc, data, tail7] + - [0x880ec, .rodata, ov_SC05_005_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x88110, data, tail8] - [0x88194, .rodata, ov_SC05_005_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x881c8, data, tail8] + - [0x881c8, data, tail9] - [0x881cc, .rodata, ov_SC05_005_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x881e8, data, tail9] + - [0x881e8, data, tail10] - [0x881ec, .rodata, ov_SC05_005_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x88208, data, tail10] + - [0x88208, data, tail11] - [0x8822c, .rodata, ov_SC05_005_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x88248, data, tail11] + - [0x88248, data, tail12] - [0x88260, .rodata, ov_SC05_005_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x88280, data, tail12] + - [0x88280, data, tail13] - [0x88300, .rodata, ov_SC05_005_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x88314, data, tail13] + - [0x88314, data, tail14] - [0x884bc, .rodata, ov_SC05_005_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x88634, data, tail14] + - [0x88634, data, tail15] - [0x886c4, .rodata, ov_SC05_005_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x88750, data, tail15] + - [0x88750, data, tail16] - [0x88768, .rodata, ov_SC05_005_jr_8017D898] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x88788, data, tail16] + - [0x88788, data, tail17] - [0x89ED4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x89ED7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_006.yaml b/config/splat.ov_SC05_006.yaml index 10230e1cd..d6c44959c 100644 --- a/config/splat.ov_SC05_006.yaml +++ b/config/splat.ov_SC05_006.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_006_after] - [0x2c2f4, c, ov_SC05_006_jr_8015444C] - [0x2cacc, c, ov_SC05_006_jr_80154C24] + - [0x30774, c, ov_SC05_006_jr_801588CC] - [0x31b2c, c, ov_SC05_006_jr_80159C84] - [0x32270, c, ov_SC05_006_jr_8015A3C8] - [0x32cd4, c, ov_SC05_006_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x66188, data, tail6] - [0x661f8, .rodata, ov_SC05_006_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6621c, data, tail7] + - [0x6623c, .rodata, ov_SC05_006_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x66260, data, tail8] - [0x662e4, .rodata, ov_SC05_006_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66318, data, tail8] + - [0x66318, data, tail9] - [0x6631c, .rodata, ov_SC05_006_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66338, data, tail9] + - [0x66338, data, tail10] - [0x6633c, .rodata, ov_SC05_006_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66358, data, tail10] + - [0x66358, data, tail11] - [0x6637c, .rodata, ov_SC05_006_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66398, data, tail11] + - [0x66398, data, tail12] - [0x663b0, .rodata, ov_SC05_006_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x663d0, data, tail12] + - [0x663d0, data, tail13] - [0x66450, .rodata, ov_SC05_006_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66464, data, tail13] + - [0x66464, data, tail14] - [0x6660c, .rodata, ov_SC05_006_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66784, data, tail14] + - [0x66784, data, tail15] - [0x66814, .rodata, ov_SC05_006_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x668a0, data, tail15] + - [0x668a0, data, tail16] - [0x668b8, .rodata, ov_SC05_006_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x668d8, data, tail16] + - [0x668d8, data, tail17] - [0x68004, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x68007] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_007.yaml b/config/splat.ov_SC05_007.yaml index 4a796f6a4..f618e9a11 100644 --- a/config/splat.ov_SC05_007.yaml +++ b/config/splat.ov_SC05_007.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_007_after] - [0x2c2f4, c, ov_SC05_007_jr_8015444C] - [0x2cacc, c, ov_SC05_007_jr_80154C24] + - [0x30774, c, ov_SC05_007_jr_801588CC] - [0x31b2c, c, ov_SC05_007_jr_80159C84] - [0x32270, c, ov_SC05_007_jr_8015A3C8] - [0x32cd4, c, ov_SC05_007_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x73160, data, tail6] - [0x731d0, .rodata, ov_SC05_007_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x731f4, data, tail7] + - [0x73214, .rodata, ov_SC05_007_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x73238, data, tail8] - [0x732bc, .rodata, ov_SC05_007_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x732f0, data, tail8] + - [0x732f0, data, tail9] - [0x732f4, .rodata, ov_SC05_007_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73310, data, tail9] + - [0x73310, data, tail10] - [0x73314, .rodata, ov_SC05_007_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73330, data, tail10] + - [0x73330, data, tail11] - [0x73354, .rodata, ov_SC05_007_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73370, data, tail11] + - [0x73370, data, tail12] - [0x73388, .rodata, ov_SC05_007_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x733a8, data, tail12] + - [0x733a8, data, tail13] - [0x73428, .rodata, ov_SC05_007_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7343c, data, tail13] + - [0x7343c, data, tail14] - [0x735e4, .rodata, ov_SC05_007_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7375c, data, tail14] + - [0x7375c, data, tail15] - [0x737ec, .rodata, ov_SC05_007_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73878, data, tail15] + - [0x73878, data, tail16] - [0x73890, .rodata, ov_SC05_007_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x738b0, data, tail16] + - [0x738b0, data, tail17] - [0x74DA4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x74DA7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_008.yaml b/config/splat.ov_SC05_008.yaml index 53bba88aa..f62755d22 100644 --- a/config/splat.ov_SC05_008.yaml +++ b/config/splat.ov_SC05_008.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_008_after] - [0x2c2f4, c, ov_SC05_008_jr_8015444C] - [0x2cacc, c, ov_SC05_008_jr_80154C24] + - [0x30774, c, ov_SC05_008_jr_801588CC] - [0x31b2c, c, ov_SC05_008_jr_80159C84] - [0x32270, c, ov_SC05_008_jr_8015A3C8] - [0x32cd4, c, ov_SC05_008_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x77494, data, tail6] - [0x77504, .rodata, ov_SC05_008_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x77528, data, tail7] + - [0x77548, .rodata, ov_SC05_008_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7756c, data, tail8] - [0x775f0, .rodata, ov_SC05_008_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77624, data, tail8] + - [0x77624, data, tail9] - [0x77628, .rodata, ov_SC05_008_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77644, data, tail9] + - [0x77644, data, tail10] - [0x77648, .rodata, ov_SC05_008_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77664, data, tail10] + - [0x77664, data, tail11] - [0x77688, .rodata, ov_SC05_008_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x776a4, data, tail11] + - [0x776a4, data, tail12] - [0x776bc, .rodata, ov_SC05_008_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x776dc, data, tail12] + - [0x776dc, data, tail13] - [0x7775c, .rodata, ov_SC05_008_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77770, data, tail13] + - [0x77770, data, tail14] - [0x77918, .rodata, ov_SC05_008_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77a90, data, tail14] + - [0x77a90, data, tail15] - [0x77b20, .rodata, ov_SC05_008_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77bac, data, tail15] + - [0x77bac, data, tail16] - [0x79190, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x79193] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_009.yaml b/config/splat.ov_SC05_009.yaml index b1900bc12..004d04a0a 100644 --- a/config/splat.ov_SC05_009.yaml +++ b/config/splat.ov_SC05_009.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_009_after] - [0x2c2f4, c, ov_SC05_009_jr_8015444C] - [0x2cacc, c, ov_SC05_009_jr_80154C24] + - [0x30774, c, ov_SC05_009_jr_801588CC] - [0x31b2c, c, ov_SC05_009_jr_80159C84] - [0x32cd4, c, ov_SC05_009_jr_8015AE2C] - [0x341d4, c, ov_SC05_009_jr_8015C32C] @@ -123,22 +124,24 @@ segments: - [0x6cea8, data, tail6] - [0x6cf18, .rodata, ov_SC05_009_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6cf3c, data, tail7] + - [0x6cf5c, .rodata, ov_SC05_009_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6cf80, data, tail8] - [0x6d004, .rodata, ov_SC05_009_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6d038, data, tail8] + - [0x6d038, data, tail9] - [0x6d05c, .rodata, ov_SC05_009_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6d078, data, tail9] + - [0x6d078, data, tail10] - [0x6d09c, .rodata, ov_SC05_009_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6d0b8, data, tail10] + - [0x6d0b8, data, tail11] - [0x6d0d0, .rodata, ov_SC05_009_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6d0f0, data, tail11] + - [0x6d0f0, data, tail12] - [0x6d170, .rodata, ov_SC05_009_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6d184, data, tail12] + - [0x6d184, data, tail13] - [0x6d32c, .rodata, ov_SC05_009_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6d4a4, data, tail13] + - [0x6d4a4, data, tail14] - [0x6d534, .rodata, ov_SC05_009_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6d5c0, data, tail14] + - [0x6d5c0, data, tail15] - [0x6d5d8, .rodata, ov_SC05_009_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6d5f8, data, tail15] + - [0x6d5f8, data, tail16] - [0x6EAEC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6EAEF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_010.yaml b/config/splat.ov_SC05_010.yaml index 426b4e51c..39b1687d3 100644 --- a/config/splat.ov_SC05_010.yaml +++ b/config/splat.ov_SC05_010.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_010_after] - [0x2c2f4, c, ov_SC05_010_jr_8015444C] - [0x2cacc, c, ov_SC05_010_jr_80154C24] + - [0x30774, c, ov_SC05_010_jr_801588CC] - [0x31b2c, c, ov_SC05_010_jr_80159C84] - [0x32270, c, ov_SC05_010_jr_8015A3C8] - [0x32cd4, c, ov_SC05_010_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x9d0dc, data, tail6] - [0x9d14c, .rodata, ov_SC05_010_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9d170, data, tail7] + - [0x9d190, .rodata, ov_SC05_010_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9d1b4, data, tail8] - [0x9d238, .rodata, ov_SC05_010_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d26c, data, tail8] + - [0x9d26c, data, tail9] - [0x9d270, .rodata, ov_SC05_010_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d28c, data, tail9] + - [0x9d28c, data, tail10] - [0x9d290, .rodata, ov_SC05_010_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d2ac, data, tail10] + - [0x9d2ac, data, tail11] - [0x9d2d0, .rodata, ov_SC05_010_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d2ec, data, tail11] + - [0x9d2ec, data, tail12] - [0x9d304, .rodata, ov_SC05_010_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d324, data, tail12] + - [0x9d324, data, tail13] - [0x9d3a4, .rodata, ov_SC05_010_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d3b8, data, tail13] + - [0x9d3b8, data, tail14] - [0x9d560, .rodata, ov_SC05_010_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d6d8, data, tail14] + - [0x9d6d8, data, tail15] - [0x9d768, .rodata, ov_SC05_010_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d7f4, data, tail15] + - [0x9d7f4, data, tail16] - [0x9d944, .rodata, ov_SC05_010_jr_8017C8D0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9d964, data, tail16] + - [0x9d964, data, tail17] - [0x9FED4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9FED7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_011.yaml b/config/splat.ov_SC05_011.yaml index d30721473..bb2208130 100644 --- a/config/splat.ov_SC05_011.yaml +++ b/config/splat.ov_SC05_011.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_011_after] - [0x2c2f4, c, ov_SC05_011_jr_8015444C] - [0x2cacc, c, ov_SC05_011_jr_80154C24] + - [0x30774, c, ov_SC05_011_jr_801588CC] - [0x31b2c, c, ov_SC05_011_jr_80159C84] - [0x32270, c, ov_SC05_011_jr_8015A3C8] - [0x32cd4, c, ov_SC05_011_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x73440, data, tail6] - [0x734b0, .rodata, ov_SC05_011_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x734d4, data, tail7] + - [0x734f4, .rodata, ov_SC05_011_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x73518, data, tail8] - [0x7359c, .rodata, ov_SC05_011_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x735d0, data, tail8] + - [0x735d0, data, tail9] - [0x735d4, .rodata, ov_SC05_011_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x735f0, data, tail9] + - [0x735f0, data, tail10] - [0x735f4, .rodata, ov_SC05_011_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73610, data, tail10] + - [0x73610, data, tail11] - [0x73634, .rodata, ov_SC05_011_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73650, data, tail11] + - [0x73650, data, tail12] - [0x73668, .rodata, ov_SC05_011_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73688, data, tail12] + - [0x73688, data, tail13] - [0x73708, .rodata, ov_SC05_011_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7371c, data, tail13] + - [0x7371c, data, tail14] - [0x738c4, .rodata, ov_SC05_011_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73a3c, data, tail14] + - [0x73a3c, data, tail15] - [0x73acc, .rodata, ov_SC05_011_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73b58, data, tail15] + - [0x73b58, data, tail16] - [0x73b70, .rodata, ov_SC05_011_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73b90, data, tail16] + - [0x73b90, data, tail17] - [0x75084, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x75087] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_017.yaml b/config/splat.ov_SC05_017.yaml index 08cfa389c..a1b593419 100644 --- a/config/splat.ov_SC05_017.yaml +++ b/config/splat.ov_SC05_017.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_017_after] - [0x2c2f4, c, ov_SC05_017_jr_8015444C] - [0x2cacc, c, ov_SC05_017_jr_80154C24] + - [0x30774, c, ov_SC05_017_jr_801588CC] - [0x31b2c, c, ov_SC05_017_jr_80159C84] - [0x32270, c, ov_SC05_017_jr_8015A3C8] - [0x32cd4, c, ov_SC05_017_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0xc2b28, data, tail6] - [0xc2b98, .rodata, ov_SC05_017_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc2bbc, data, tail7] + - [0xc2bdc, .rodata, ov_SC05_017_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc2c00, data, tail8] - [0xc2c84, .rodata, ov_SC05_017_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc2cb8, data, tail8] + - [0xc2cb8, data, tail9] - [0xc2cbc, .rodata, ov_SC05_017_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc2cd8, data, tail9] + - [0xc2cd8, data, tail10] - [0xc2cdc, .rodata, ov_SC05_017_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc2cf8, data, tail10] + - [0xc2cf8, data, tail11] - [0xc2d1c, .rodata, ov_SC05_017_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc2d38, data, tail11] + - [0xc2d38, data, tail12] - [0xc2d50, .rodata, ov_SC05_017_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc2d70, data, tail12] + - [0xc2d70, data, tail13] - [0xc2df0, .rodata, ov_SC05_017_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc2e04, data, tail13] + - [0xc2e04, data, tail14] - [0xc2fac, .rodata, ov_SC05_017_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc3124, data, tail14] + - [0xc3124, data, tail15] - [0xc31b4, .rodata, ov_SC05_017_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc3240, data, tail15] + - [0xc3240, data, tail16] - [0xC582C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC582F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_018.yaml b/config/splat.ov_SC05_018.yaml index 30b2da528..f3d782d42 100644 --- a/config/splat.ov_SC05_018.yaml +++ b/config/splat.ov_SC05_018.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_018_after] - [0x2c2f4, c, ov_SC05_018_jr_8015444C] - [0x2cacc, c, ov_SC05_018_jr_80154C24] + - [0x30774, c, ov_SC05_018_jr_801588CC] - [0x31b2c, c, ov_SC05_018_jr_80159C84] - [0x32270, c, ov_SC05_018_jr_8015A3C8] - [0x32cd4, c, ov_SC05_018_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xbc69c, data, tail6] - [0xbc70c, .rodata, ov_SC05_018_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbc730, data, tail7] + - [0xbc750, .rodata, ov_SC05_018_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbc774, data, tail8] - [0xbc7f8, .rodata, ov_SC05_018_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbc82c, data, tail8] + - [0xbc82c, data, tail9] - [0xbc830, .rodata, ov_SC05_018_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbc84c, data, tail9] + - [0xbc84c, data, tail10] - [0xbc850, .rodata, ov_SC05_018_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbc86c, data, tail10] + - [0xbc86c, data, tail11] - [0xbc890, .rodata, ov_SC05_018_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbc8ac, data, tail11] + - [0xbc8ac, data, tail12] - [0xbc8c4, .rodata, ov_SC05_018_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbc8e4, data, tail12] + - [0xbc8e4, data, tail13] - [0xbc964, .rodata, ov_SC05_018_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbc978, data, tail13] + - [0xbc978, data, tail14] - [0xbcb20, .rodata, ov_SC05_018_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbcc98, data, tail14] + - [0xbcc98, data, tail15] - [0xbcd28, .rodata, ov_SC05_018_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbcdb4, data, tail15] + - [0xbcdb4, data, tail16] - [0xbcdcc, .rodata, ov_SC05_018_jr_8017D604] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbcdec, data, tail16] + - [0xbcdec, data, tail17] - [0xBE734, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBE737] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC05_019.yaml b/config/splat.ov_SC05_019.yaml index cdd393eef..d03d63043 100644 --- a/config/splat.ov_SC05_019.yaml +++ b/config/splat.ov_SC05_019.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC05_019_after] - [0x2c2f4, c, ov_SC05_019_jr_8015444C] - [0x2cacc, c, ov_SC05_019_jr_80154C24] + - [0x30774, c, ov_SC05_019_jr_801588CC] - [0x31b2c, c, ov_SC05_019_jr_80159C84] - [0x32270, c, ov_SC05_019_jr_8015A3C8] - [0x32cd4, c, ov_SC05_019_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x65db0, data, tail6] - [0x65e20, .rodata, ov_SC05_019_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x65e44, data, tail7] + - [0x65e64, .rodata, ov_SC05_019_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x65e88, data, tail8] - [0x65f0c, .rodata, ov_SC05_019_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65f40, data, tail8] + - [0x65f40, data, tail9] - [0x65f44, .rodata, ov_SC05_019_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65f60, data, tail9] + - [0x65f60, data, tail10] - [0x65f64, .rodata, ov_SC05_019_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65f80, data, tail10] + - [0x65f80, data, tail11] - [0x65fa4, .rodata, ov_SC05_019_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65fc0, data, tail11] + - [0x65fc0, data, tail12] - [0x65fd8, .rodata, ov_SC05_019_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x65ff8, data, tail12] + - [0x65ff8, data, tail13] - [0x66078, .rodata, ov_SC05_019_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6608c, data, tail13] + - [0x6608c, data, tail14] - [0x66234, .rodata, ov_SC05_019_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x663ac, data, tail14] + - [0x663ac, data, tail15] - [0x6643c, .rodata, ov_SC05_019_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x664c8, data, tail15] + - [0x664c8, data, tail16] - [0x66500, .rodata, ov_SC05_019_jr_8017D5C0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66520, data, tail16] + - [0x66520, data, tail17] - [0x679D4, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x679D5] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_000.yaml b/config/splat.ov_SC06_000.yaml index 617e6acaa..338cf58fc 100644 --- a/config/splat.ov_SC06_000.yaml +++ b/config/splat.ov_SC06_000.yaml @@ -101,6 +101,7 @@ segments: - [0x1d64c, c, ov_SC06_000_after] - [0x2c2f4, c, ov_SC06_000_jr_8015444C] - [0x2cacc, c, ov_SC06_000_jr_80154C24] + - [0x30774, c, ov_SC06_000_jr_801588CC] - [0x31b2c, c, ov_SC06_000_jr_80159C84] - [0x32270, c, ov_SC06_000_jr_8015A3C8] - [0x32cd4, c, ov_SC06_000_jr_8015AE2C] @@ -120,22 +121,24 @@ segments: - [0x84a28, data, tail5] - [0x84a98, .rodata, ov_SC06_000_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x84abc, data, tail6] + - [0x84adc, .rodata, ov_SC06_000_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x84b00, data, tail7] - [0x84b84, .rodata, ov_SC06_000_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x84bb8, data, tail7] + - [0x84bb8, data, tail8] - [0x84bbc, .rodata, ov_SC06_000_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x84bd8, data, tail8] + - [0x84bd8, data, tail9] - [0x84bdc, .rodata, ov_SC06_000_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x84bf8, data, tail9] + - [0x84bf8, data, tail10] - [0x84c1c, .rodata, ov_SC06_000_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x84c38, data, tail10] + - [0x84c38, data, tail11] - [0x84c50, .rodata, ov_SC06_000_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x84c70, data, tail11] + - [0x84c70, data, tail12] - [0x84cf0, .rodata, ov_SC06_000_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x84d04, data, tail12] + - [0x84d04, data, tail13] - [0x84eac, .rodata, ov_SC06_000_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x85024, data, tail13] + - [0x85024, data, tail14] - [0x850b4, .rodata, ov_SC06_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x85140, data, tail14] + - [0x85140, data, tail15] - [0x8A02C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8A02F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_006.yaml b/config/splat.ov_SC06_006.yaml index e9089c697..111314a3d 100644 --- a/config/splat.ov_SC06_006.yaml +++ b/config/splat.ov_SC06_006.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_006_after] - [0x2c2f4, c, ov_SC06_006_jr_8015444C] - [0x2cacc, c, ov_SC06_006_jr_80154C24] + - [0x30774, c, ov_SC06_006_jr_801588CC] - [0x31b2c, c, ov_SC06_006_jr_80159C84] - [0x32270, c, ov_SC06_006_jr_8015A3C8] - [0x32cd4, c, ov_SC06_006_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xce330, data, tail6] - [0xce3a0, .rodata, ov_SC06_006_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xce3c4, data, tail7] + - [0xce3e4, .rodata, ov_SC06_006_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xce408, data, tail8] - [0xce48c, .rodata, ov_SC06_006_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xce4c0, data, tail8] + - [0xce4c0, data, tail9] - [0xce4c4, .rodata, ov_SC06_006_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xce4e0, data, tail9] + - [0xce4e0, data, tail10] - [0xce4e4, .rodata, ov_SC06_006_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xce500, data, tail10] + - [0xce500, data, tail11] - [0xce524, .rodata, ov_SC06_006_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xce540, data, tail11] + - [0xce540, data, tail12] - [0xce558, .rodata, ov_SC06_006_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xce578, data, tail12] + - [0xce578, data, tail13] - [0xce5f8, .rodata, ov_SC06_006_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xce60c, data, tail13] + - [0xce60c, data, tail14] - [0xce7b4, .rodata, ov_SC06_006_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xce92c, data, tail14] + - [0xce92c, data, tail15] - [0xce9bc, .rodata, ov_SC06_006_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xcea48, data, tail15] + - [0xcea48, data, tail16] - [0xcea60, .rodata, ov_SC06_006_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xcea80, data, tail16] + - [0xcea80, data, tail17] - [0xD0A0C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xD0A0F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_008.yaml b/config/splat.ov_SC06_008.yaml index d4c1e6624..89673b571 100644 --- a/config/splat.ov_SC06_008.yaml +++ b/config/splat.ov_SC06_008.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_008_after] - [0x2c2f4, c, ov_SC06_008_jr_8015444C] - [0x2cacc, c, ov_SC06_008_jr_80154C24] + - [0x30774, c, ov_SC06_008_jr_801588CC] - [0x31b2c, c, ov_SC06_008_jr_80159C84] - [0x32270, c, ov_SC06_008_jr_8015A3C8] - [0x32cd4, c, ov_SC06_008_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x80408, data, tail6] - [0x80478, .rodata, ov_SC06_008_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8049c, data, tail7] + - [0x804bc, .rodata, ov_SC06_008_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x804e0, data, tail8] - [0x80564, .rodata, ov_SC06_008_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80598, data, tail8] + - [0x80598, data, tail9] - [0x8059c, .rodata, ov_SC06_008_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x805b8, data, tail9] + - [0x805b8, data, tail10] - [0x805bc, .rodata, ov_SC06_008_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x805d8, data, tail10] + - [0x805d8, data, tail11] - [0x805fc, .rodata, ov_SC06_008_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80618, data, tail11] + - [0x80618, data, tail12] - [0x80630, .rodata, ov_SC06_008_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80650, data, tail12] + - [0x80650, data, tail13] - [0x806d0, .rodata, ov_SC06_008_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x806e4, data, tail13] + - [0x806e4, data, tail14] - [0x8088c, .rodata, ov_SC06_008_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80a04, data, tail14] + - [0x80a04, data, tail15] - [0x80a94, .rodata, ov_SC06_008_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80b20, data, tail15] + - [0x80b20, data, tail16] - [0x80b38, .rodata, ov_SC06_008_jr_8017C294] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x80b58, data, tail16] + - [0x80b58, data, tail17] - [0x826DC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x826DF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_010.yaml b/config/splat.ov_SC06_010.yaml index db2514b18..a1faf70ce 100644 --- a/config/splat.ov_SC06_010.yaml +++ b/config/splat.ov_SC06_010.yaml @@ -101,6 +101,7 @@ segments: - [0x1d64c, c, ov_SC06_010_after] - [0x2c2f4, c, ov_SC06_010_jr_8015444C] - [0x2cacc, c, ov_SC06_010_jr_80154C24] + - [0x30774, c, ov_SC06_010_jr_801588CC] - [0x31b2c, c, ov_SC06_010_jr_80159C84] - [0x32270, c, ov_SC06_010_jr_8015A3C8] - [0x32cd4, c, ov_SC06_010_jr_8015AE2C] @@ -120,22 +121,24 @@ segments: - [0x8845c, data, tail5] - [0x884cc, .rodata, ov_SC06_010_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x884f0, data, tail6] + - [0x88510, .rodata, ov_SC06_010_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x88534, data, tail7] - [0x885b8, .rodata, ov_SC06_010_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x885ec, data, tail7] + - [0x885ec, data, tail8] - [0x885f0, .rodata, ov_SC06_010_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8860c, data, tail8] + - [0x8860c, data, tail9] - [0x88610, .rodata, ov_SC06_010_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8862c, data, tail9] + - [0x8862c, data, tail10] - [0x88650, .rodata, ov_SC06_010_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8866c, data, tail10] + - [0x8866c, data, tail11] - [0x88684, .rodata, ov_SC06_010_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x886a4, data, tail11] + - [0x886a4, data, tail12] - [0x88724, .rodata, ov_SC06_010_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x88738, data, tail12] + - [0x88738, data, tail13] - [0x888e0, .rodata, ov_SC06_010_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x88a58, data, tail13] + - [0x88a58, data, tail14] - [0x88ae8, .rodata, ov_SC06_010_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x88b74, data, tail14] + - [0x88b74, data, tail15] - [0x8AB24, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8AB27] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_011.yaml b/config/splat.ov_SC06_011.yaml index 305f9eed0..999ee2159 100644 --- a/config/splat.ov_SC06_011.yaml +++ b/config/splat.ov_SC06_011.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_011_after] - [0x2c2f4, c, ov_SC06_011_jr_8015444C] - [0x2cacc, c, ov_SC06_011_jr_80154C24] + - [0x30774, c, ov_SC06_011_jr_801588CC] - [0x31b2c, c, ov_SC06_011_jr_80159C84] - [0x32270, c, ov_SC06_011_jr_8015A3C8] - [0x32cd4, c, ov_SC06_011_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x81fbc, data, tail6] - [0x8202c, .rodata, ov_SC06_011_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x82050, data, tail7] + - [0x82070, .rodata, ov_SC06_011_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x82094, data, tail8] - [0x82118, .rodata, ov_SC06_011_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8214c, data, tail8] + - [0x8214c, data, tail9] - [0x82150, .rodata, ov_SC06_011_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8216c, data, tail9] + - [0x8216c, data, tail10] - [0x82170, .rodata, ov_SC06_011_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8218c, data, tail10] + - [0x8218c, data, tail11] - [0x821b0, .rodata, ov_SC06_011_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x821cc, data, tail11] + - [0x821cc, data, tail12] - [0x821e4, .rodata, ov_SC06_011_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x82204, data, tail12] + - [0x82204, data, tail13] - [0x82284, .rodata, ov_SC06_011_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x82298, data, tail13] + - [0x82298, data, tail14] - [0x82440, .rodata, ov_SC06_011_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x825b8, data, tail14] + - [0x825b8, data, tail15] - [0x82648, .rodata, ov_SC06_011_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x826d4, data, tail15] + - [0x826d4, data, tail16] - [0x826ec, .rodata, ov_SC06_011_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8270c, data, tail16] + - [0x8270c, data, tail17] - [0x83BFC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x83BFF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_013.yaml b/config/splat.ov_SC06_013.yaml index 3a7ec9a2a..ed83dd337 100644 --- a/config/splat.ov_SC06_013.yaml +++ b/config/splat.ov_SC06_013.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_013_after] - [0x2c2f4, c, ov_SC06_013_jr_8015444C] - [0x2cacc, c, ov_SC06_013_jr_80154C24] + - [0x30774, c, ov_SC06_013_jr_801588CC] - [0x31b2c, c, ov_SC06_013_jr_80159C84] - [0x32270, c, ov_SC06_013_jr_8015A3C8] - [0x32cd4, c, ov_SC06_013_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x70e90, data, tail6] - [0x70f00, .rodata, ov_SC06_013_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x70f24, data, tail7] + - [0x70f44, .rodata, ov_SC06_013_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x70f68, data, tail8] - [0x70fec, .rodata, ov_SC06_013_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71020, data, tail8] + - [0x71020, data, tail9] - [0x71024, .rodata, ov_SC06_013_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71040, data, tail9] + - [0x71040, data, tail10] - [0x71044, .rodata, ov_SC06_013_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71060, data, tail10] + - [0x71060, data, tail11] - [0x71084, .rodata, ov_SC06_013_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x710a0, data, tail11] + - [0x710a0, data, tail12] - [0x710b8, .rodata, ov_SC06_013_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x710d8, data, tail12] + - [0x710d8, data, tail13] - [0x71158, .rodata, ov_SC06_013_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7116c, data, tail13] + - [0x7116c, data, tail14] - [0x71314, .rodata, ov_SC06_013_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7148c, data, tail14] + - [0x7148c, data, tail15] - [0x7151c, .rodata, ov_SC06_013_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x715a8, data, tail15] + - [0x715a8, data, tail16] - [0x715c0, .rodata, ov_SC06_013_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x715e0, data, tail16] + - [0x715e0, data, tail17] - [0x72AAC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x72AAF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_014.yaml b/config/splat.ov_SC06_014.yaml index 228c8586e..fc9645c96 100644 --- a/config/splat.ov_SC06_014.yaml +++ b/config/splat.ov_SC06_014.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_014_after] - [0x2c2f4, c, ov_SC06_014_jr_8015444C] - [0x2cacc, c, ov_SC06_014_jr_80154C24] + - [0x30774, c, ov_SC06_014_jr_801588CC] - [0x31b2c, c, ov_SC06_014_jr_80159C84] - [0x32270, c, ov_SC06_014_jr_8015A3C8] - [0x32cd4, c, ov_SC06_014_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x77880, data, tail6] - [0x778f0, .rodata, ov_SC06_014_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x77914, data, tail7] + - [0x77934, .rodata, ov_SC06_014_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x77958, data, tail8] - [0x779dc, .rodata, ov_SC06_014_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77a10, data, tail8] + - [0x77a10, data, tail9] - [0x77a14, .rodata, ov_SC06_014_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77a30, data, tail9] + - [0x77a30, data, tail10] - [0x77a34, .rodata, ov_SC06_014_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77a50, data, tail10] + - [0x77a50, data, tail11] - [0x77a74, .rodata, ov_SC06_014_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77a90, data, tail11] + - [0x77a90, data, tail12] - [0x77aa8, .rodata, ov_SC06_014_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77ac8, data, tail12] + - [0x77ac8, data, tail13] - [0x77b48, .rodata, ov_SC06_014_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77b5c, data, tail13] + - [0x77b5c, data, tail14] - [0x77d04, .rodata, ov_SC06_014_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77e7c, data, tail14] + - [0x77e7c, data, tail15] - [0x77f0c, .rodata, ov_SC06_014_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77f98, data, tail15] + - [0x77f98, data, tail16] - [0x77fb0, .rodata, ov_SC06_014_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x77fd0, data, tail16] + - [0x77fd0, data, tail17] - [0x794C4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x794C7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_015.yaml b/config/splat.ov_SC06_015.yaml index 31e28fc0a..e7b1244bb 100644 --- a/config/splat.ov_SC06_015.yaml +++ b/config/splat.ov_SC06_015.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_015_after] - [0x2c2f4, c, ov_SC06_015_jr_8015444C] - [0x2cacc, c, ov_SC06_015_jr_80154C24] + - [0x30774, c, ov_SC06_015_jr_801588CC] - [0x31b2c, c, ov_SC06_015_jr_80159C84] - [0x32270, c, ov_SC06_015_jr_8015A3C8] - [0x32cd4, c, ov_SC06_015_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x6ac60, data, tail6] - [0x6acd0, .rodata, ov_SC06_015_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6acf4, data, tail7] + - [0x6ad14, .rodata, ov_SC06_015_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6ad38, data, tail8] - [0x6adbc, .rodata, ov_SC06_015_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6adf0, data, tail8] + - [0x6adf0, data, tail9] - [0x6adf4, .rodata, ov_SC06_015_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6ae10, data, tail9] + - [0x6ae10, data, tail10] - [0x6ae14, .rodata, ov_SC06_015_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6ae30, data, tail10] + - [0x6ae30, data, tail11] - [0x6ae54, .rodata, ov_SC06_015_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6ae70, data, tail11] + - [0x6ae70, data, tail12] - [0x6ae88, .rodata, ov_SC06_015_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6aea8, data, tail12] + - [0x6aea8, data, tail13] - [0x6af28, .rodata, ov_SC06_015_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6af3c, data, tail13] + - [0x6af3c, data, tail14] - [0x6b0e4, .rodata, ov_SC06_015_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b25c, data, tail14] + - [0x6b25c, data, tail15] - [0x6b2ec, .rodata, ov_SC06_015_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b378, data, tail15] + - [0x6b378, data, tail16] - [0x6b390, .rodata, ov_SC06_015_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6b3b0, data, tail16] + - [0x6b3b0, data, tail17] - [0x6C8A4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6C8A7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_016.yaml b/config/splat.ov_SC06_016.yaml index 6bea393b3..1ade94ea6 100644 --- a/config/splat.ov_SC06_016.yaml +++ b/config/splat.ov_SC06_016.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_016_after] - [0x2c2f4, c, ov_SC06_016_jr_8015444C] - [0x2cacc, c, ov_SC06_016_jr_80154C24] + - [0x30774, c, ov_SC06_016_jr_801588CC] - [0x31b2c, c, ov_SC06_016_jr_80159C84] - [0x32270, c, ov_SC06_016_jr_8015A3C8] - [0x32cd4, c, ov_SC06_016_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x758a8, data, tail6] - [0x75918, .rodata, ov_SC06_016_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7593c, data, tail7] + - [0x7595c, .rodata, ov_SC06_016_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x75980, data, tail8] - [0x75a04, .rodata, ov_SC06_016_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75a38, data, tail8] + - [0x75a38, data, tail9] - [0x75a3c, .rodata, ov_SC06_016_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75a58, data, tail9] + - [0x75a58, data, tail10] - [0x75a5c, .rodata, ov_SC06_016_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75a78, data, tail10] + - [0x75a78, data, tail11] - [0x75a9c, .rodata, ov_SC06_016_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75ab8, data, tail11] + - [0x75ab8, data, tail12] - [0x75ad0, .rodata, ov_SC06_016_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75af0, data, tail12] + - [0x75af0, data, tail13] - [0x75b70, .rodata, ov_SC06_016_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75b84, data, tail13] + - [0x75b84, data, tail14] - [0x75d2c, .rodata, ov_SC06_016_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75ea4, data, tail14] + - [0x75ea4, data, tail15] - [0x75f34, .rodata, ov_SC06_016_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x75fc0, data, tail15] + - [0x75fc0, data, tail16] - [0x76110, .rodata, ov_SC06_016_jr_8017C8D0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x76130, data, tail16] + - [0x76130, data, tail17] - [0x78114, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x78117] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_018.yaml b/config/splat.ov_SC06_018.yaml index f3140cc39..2515d461d 100644 --- a/config/splat.ov_SC06_018.yaml +++ b/config/splat.ov_SC06_018.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_018_after] - [0x2c2f4, c, ov_SC06_018_jr_8015444C] - [0x2cacc, c, ov_SC06_018_jr_80154C24] + - [0x30774, c, ov_SC06_018_jr_801588CC] - [0x31b2c, c, ov_SC06_018_jr_80159C84] - [0x32270, c, ov_SC06_018_jr_8015A3C8] - [0x32cd4, c, ov_SC06_018_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xab138, data, tail6] - [0xab1a8, .rodata, ov_SC06_018_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xab1cc, data, tail7] + - [0xab1ec, .rodata, ov_SC06_018_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xab210, data, tail8] - [0xab294, .rodata, ov_SC06_018_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xab2c8, data, tail8] + - [0xab2c8, data, tail9] - [0xab2cc, .rodata, ov_SC06_018_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xab2e8, data, tail9] + - [0xab2e8, data, tail10] - [0xab2ec, .rodata, ov_SC06_018_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xab308, data, tail10] + - [0xab308, data, tail11] - [0xab32c, .rodata, ov_SC06_018_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xab348, data, tail11] + - [0xab348, data, tail12] - [0xab360, .rodata, ov_SC06_018_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xab380, data, tail12] + - [0xab380, data, tail13] - [0xab400, .rodata, ov_SC06_018_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xab414, data, tail13] + - [0xab414, data, tail14] - [0xab5bc, .rodata, ov_SC06_018_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xab734, data, tail14] + - [0xab734, data, tail15] - [0xab7c4, .rodata, ov_SC06_018_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xab850, data, tail15] + - [0xab850, data, tail16] - [0xab868, .rodata, ov_SC06_018_jr_8017C24C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xab888, data, tail16] + - [0xab888, data, tail17] - [0xADA44, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xADA47] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_020.yaml b/config/splat.ov_SC06_020.yaml index 03c07ccb2..19cf0b1d7 100644 --- a/config/splat.ov_SC06_020.yaml +++ b/config/splat.ov_SC06_020.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_020_after] - [0x2c2f4, c, ov_SC06_020_jr_8015444C] - [0x2cacc, c, ov_SC06_020_jr_80154C24] + - [0x30774, c, ov_SC06_020_jr_801588CC] - [0x31b2c, c, ov_SC06_020_jr_80159C84] - [0x32270, c, ov_SC06_020_jr_8015A3C8] - [0x32cd4, c, ov_SC06_020_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x90a20, data, tail6] - [0x90a90, .rodata, ov_SC06_020_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x90ab4, data, tail7] + - [0x90ad4, .rodata, ov_SC06_020_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x90af8, data, tail8] - [0x90b7c, .rodata, ov_SC06_020_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90bb0, data, tail8] + - [0x90bb0, data, tail9] - [0x90bb4, .rodata, ov_SC06_020_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90bd0, data, tail9] + - [0x90bd0, data, tail10] - [0x90bd4, .rodata, ov_SC06_020_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90bf0, data, tail10] + - [0x90bf0, data, tail11] - [0x90c14, .rodata, ov_SC06_020_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90c30, data, tail11] + - [0x90c30, data, tail12] - [0x90c48, .rodata, ov_SC06_020_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90c68, data, tail12] + - [0x90c68, data, tail13] - [0x90ce8, .rodata, ov_SC06_020_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90cfc, data, tail13] + - [0x90cfc, data, tail14] - [0x90ea4, .rodata, ov_SC06_020_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9101c, data, tail14] + - [0x9101c, data, tail15] - [0x910ac, .rodata, ov_SC06_020_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x91138, data, tail15] + - [0x91138, data, tail16] - [0x91150, .rodata, ov_SC06_020_jr_8017C24C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x91170, data, tail16] + - [0x91170, data, tail17] - [0x92894, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x92897] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_022.yaml b/config/splat.ov_SC06_022.yaml index 312e56118..7dc8b7183 100644 --- a/config/splat.ov_SC06_022.yaml +++ b/config/splat.ov_SC06_022.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_022_after] - [0x2c2f4, c, ov_SC06_022_jr_8015444C] - [0x2cacc, c, ov_SC06_022_jr_80154C24] + - [0x30774, c, ov_SC06_022_jr_801588CC] - [0x31b2c, c, ov_SC06_022_jr_80159C84] - [0x32270, c, ov_SC06_022_jr_8015A3C8] - [0x32cd4, c, ov_SC06_022_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xb8230, data, tail6] - [0xb82a0, .rodata, ov_SC06_022_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb82c4, data, tail7] + - [0xb82e4, .rodata, ov_SC06_022_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb8308, data, tail8] - [0xb838c, .rodata, ov_SC06_022_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb83c0, data, tail8] + - [0xb83c0, data, tail9] - [0xb83c4, .rodata, ov_SC06_022_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb83e0, data, tail9] + - [0xb83e0, data, tail10] - [0xb83e4, .rodata, ov_SC06_022_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb8400, data, tail10] + - [0xb8400, data, tail11] - [0xb8424, .rodata, ov_SC06_022_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb8440, data, tail11] + - [0xb8440, data, tail12] - [0xb8458, .rodata, ov_SC06_022_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb8478, data, tail12] + - [0xb8478, data, tail13] - [0xb84f8, .rodata, ov_SC06_022_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb850c, data, tail13] + - [0xb850c, data, tail14] - [0xb86b4, .rodata, ov_SC06_022_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb882c, data, tail14] + - [0xb882c, data, tail15] - [0xb88bc, .rodata, ov_SC06_022_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb8948, data, tail15] + - [0xb8948, data, tail16] - [0xb8960, .rodata, ov_SC06_022_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb8980, data, tail16] + - [0xb8980, data, tail17] - [0xBA114, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBA117] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_024.yaml b/config/splat.ov_SC06_024.yaml index 463cee51d..10a51006a 100644 --- a/config/splat.ov_SC06_024.yaml +++ b/config/splat.ov_SC06_024.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_024_after] - [0x2c2f4, c, ov_SC06_024_jr_8015444C] - [0x2cacc, c, ov_SC06_024_jr_80154C24] + - [0x30774, c, ov_SC06_024_jr_801588CC] - [0x31b2c, c, ov_SC06_024_jr_80159C84] - [0x32270, c, ov_SC06_024_jr_8015A3C8] - [0x32cd4, c, ov_SC06_024_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xb7374, data, tail6] - [0xb73e4, .rodata, ov_SC06_024_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb7408, data, tail7] + - [0xb7428, .rodata, ov_SC06_024_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb744c, data, tail8] - [0xb74d0, .rodata, ov_SC06_024_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7504, data, tail8] + - [0xb7504, data, tail9] - [0xb7508, .rodata, ov_SC06_024_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7524, data, tail9] + - [0xb7524, data, tail10] - [0xb7528, .rodata, ov_SC06_024_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7544, data, tail10] + - [0xb7544, data, tail11] - [0xb7568, .rodata, ov_SC06_024_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7584, data, tail11] + - [0xb7584, data, tail12] - [0xb759c, .rodata, ov_SC06_024_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb75bc, data, tail12] + - [0xb75bc, data, tail13] - [0xb763c, .rodata, ov_SC06_024_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7650, data, tail13] + - [0xb7650, data, tail14] - [0xb77f8, .rodata, ov_SC06_024_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7970, data, tail14] + - [0xb7970, data, tail15] - [0xb7a00, .rodata, ov_SC06_024_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7a8c, data, tail15] + - [0xb7a8c, data, tail16] - [0xb7aa4, .rodata, ov_SC06_024_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb7ac4, data, tail16] + - [0xb7ac4, data, tail17] - [0xB980C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xB980F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_025.yaml b/config/splat.ov_SC06_025.yaml index 987ca90ac..3f72a2346 100644 --- a/config/splat.ov_SC06_025.yaml +++ b/config/splat.ov_SC06_025.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_025_after] - [0x2c2f4, c, ov_SC06_025_jr_8015444C] - [0x2cacc, c, ov_SC06_025_jr_80154C24] + - [0x30774, c, ov_SC06_025_jr_801588CC] - [0x31b2c, c, ov_SC06_025_jr_80159C84] - [0x32270, c, ov_SC06_025_jr_8015A3C8] - [0x32cd4, c, ov_SC06_025_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x87694, data, tail6] - [0x87704, .rodata, ov_SC06_025_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x87728, data, tail7] + - [0x87748, .rodata, ov_SC06_025_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x8776c, data, tail8] - [0x877f0, .rodata, ov_SC06_025_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x87824, data, tail8] + - [0x87824, data, tail9] - [0x87828, .rodata, ov_SC06_025_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x87844, data, tail9] + - [0x87844, data, tail10] - [0x87848, .rodata, ov_SC06_025_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x87864, data, tail10] + - [0x87864, data, tail11] - [0x87888, .rodata, ov_SC06_025_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x878a4, data, tail11] + - [0x878a4, data, tail12] - [0x878bc, .rodata, ov_SC06_025_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x878dc, data, tail12] + - [0x878dc, data, tail13] - [0x8795c, .rodata, ov_SC06_025_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x87970, data, tail13] + - [0x87970, data, tail14] - [0x87b18, .rodata, ov_SC06_025_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x87c90, data, tail14] + - [0x87c90, data, tail15] - [0x87d20, .rodata, ov_SC06_025_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x87dac, data, tail15] + - [0x87dac, data, tail16] - [0x87dc4, .rodata, ov_SC06_025_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x87de4, data, tail16] + - [0x87de4, data, tail17] - [0x8A12C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x8A12F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_027.yaml b/config/splat.ov_SC06_027.yaml index c2b94adfa..b2941e0ee 100644 --- a/config/splat.ov_SC06_027.yaml +++ b/config/splat.ov_SC06_027.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_027_after] - [0x2c2f4, c, ov_SC06_027_jr_8015444C] - [0x2cacc, c, ov_SC06_027_jr_80154C24] + - [0x30774, c, ov_SC06_027_jr_801588CC] - [0x31b2c, c, ov_SC06_027_jr_80159C84] - [0x32270, c, ov_SC06_027_jr_8015A3C8] - [0x32cd4, c, ov_SC06_027_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x736d0, data, tail6] - [0x73740, .rodata, ov_SC06_027_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x73764, data, tail7] + - [0x73784, .rodata, ov_SC06_027_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x737a8, data, tail8] - [0x7382c, .rodata, ov_SC06_027_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73860, data, tail8] + - [0x73860, data, tail9] - [0x73864, .rodata, ov_SC06_027_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73880, data, tail9] + - [0x73880, data, tail10] - [0x73884, .rodata, ov_SC06_027_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x738a0, data, tail10] + - [0x738a0, data, tail11] - [0x738c4, .rodata, ov_SC06_027_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x738e0, data, tail11] + - [0x738e0, data, tail12] - [0x738f8, .rodata, ov_SC06_027_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73918, data, tail12] + - [0x73918, data, tail13] - [0x73998, .rodata, ov_SC06_027_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x739ac, data, tail13] + - [0x739ac, data, tail14] - [0x73b54, .rodata, ov_SC06_027_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73ccc, data, tail14] + - [0x73ccc, data, tail15] - [0x73d5c, .rodata, ov_SC06_027_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73de8, data, tail15] + - [0x73de8, data, tail16] - [0x73e00, .rodata, ov_SC06_027_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x73e20, data, tail16] + - [0x73e20, data, tail17] - [0x752D4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x752D7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_029.yaml b/config/splat.ov_SC06_029.yaml index deb47613e..bd5475455 100644 --- a/config/splat.ov_SC06_029.yaml +++ b/config/splat.ov_SC06_029.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_029_after] - [0x2c2f4, c, ov_SC06_029_jr_8015444C] - [0x2cacc, c, ov_SC06_029_jr_80154C24] + - [0x30774, c, ov_SC06_029_jr_801588CC] - [0x31b2c, c, ov_SC06_029_jr_80159C84] - [0x32270, c, ov_SC06_029_jr_8015A3C8] - [0x32cd4, c, ov_SC06_029_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0xb2d4c, data, tail6] - [0xb2dbc, .rodata, ov_SC06_029_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb2de0, data, tail7] + - [0xb2e00, .rodata, ov_SC06_029_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb2e24, data, tail8] - [0xb2ea8, .rodata, ov_SC06_029_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb2edc, data, tail8] + - [0xb2edc, data, tail9] - [0xb2ee0, .rodata, ov_SC06_029_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb2efc, data, tail9] + - [0xb2efc, data, tail10] - [0xb2f00, .rodata, ov_SC06_029_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb2f1c, data, tail10] + - [0xb2f1c, data, tail11] - [0xb2f40, .rodata, ov_SC06_029_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb2f5c, data, tail11] + - [0xb2f5c, data, tail12] - [0xb2f74, .rodata, ov_SC06_029_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb2f94, data, tail12] + - [0xb2f94, data, tail13] - [0xb3014, .rodata, ov_SC06_029_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb3028, data, tail13] + - [0xb3028, data, tail14] - [0xb31d0, .rodata, ov_SC06_029_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb3348, data, tail14] + - [0xb3348, data, tail15] - [0xb33d8, .rodata, ov_SC06_029_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb3464, data, tail15] + - [0xb3464, data, tail16] - [0xBA034, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBA037] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_030.yaml b/config/splat.ov_SC06_030.yaml index 8444ea582..3e0841892 100644 --- a/config/splat.ov_SC06_030.yaml +++ b/config/splat.ov_SC06_030.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_030_after] - [0x2c2f4, c, ov_SC06_030_jr_8015444C] - [0x2cacc, c, ov_SC06_030_jr_80154C24] + - [0x30774, c, ov_SC06_030_jr_801588CC] - [0x31b2c, c, ov_SC06_030_jr_80159C84] - [0x32270, c, ov_SC06_030_jr_8015A3C8] - [0x32cd4, c, ov_SC06_030_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x900b0, data, tail6] - [0x90120, .rodata, ov_SC06_030_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x90144, data, tail7] + - [0x90164, .rodata, ov_SC06_030_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x90188, data, tail8] - [0x9020c, .rodata, ov_SC06_030_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90240, data, tail8] + - [0x90240, data, tail9] - [0x90244, .rodata, ov_SC06_030_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90260, data, tail9] + - [0x90260, data, tail10] - [0x90264, .rodata, ov_SC06_030_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90280, data, tail10] + - [0x90280, data, tail11] - [0x902a4, .rodata, ov_SC06_030_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x902c0, data, tail11] + - [0x902c0, data, tail12] - [0x902d8, .rodata, ov_SC06_030_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x902f8, data, tail12] + - [0x902f8, data, tail13] - [0x90378, .rodata, ov_SC06_030_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9038c, data, tail13] + - [0x9038c, data, tail14] - [0x90534, .rodata, ov_SC06_030_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x906ac, data, tail14] + - [0x906ac, data, tail15] - [0x9073c, .rodata, ov_SC06_030_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x907c8, data, tail15] + - [0x907c8, data, tail16] - [0x90918, .rodata, ov_SC06_030_jr_8017C8D0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x90938, data, tail16] + - [0x90938, data, tail17] - [0x91F2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x91F2F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_032.yaml b/config/splat.ov_SC06_032.yaml index e8f4d5823..31b4f3500 100644 --- a/config/splat.ov_SC06_032.yaml +++ b/config/splat.ov_SC06_032.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_032_after] - [0x2c2f4, c, ov_SC06_032_jr_8015444C] - [0x2cacc, c, ov_SC06_032_jr_80154C24] + - [0x30774, c, ov_SC06_032_jr_801588CC] - [0x31b2c, c, ov_SC06_032_jr_80159C84] - [0x32270, c, ov_SC06_032_jr_8015A3C8] - [0x32cd4, c, ov_SC06_032_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xa670c, data, tail6] - [0xa677c, .rodata, ov_SC06_032_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa67a0, data, tail7] + - [0xa67c0, .rodata, ov_SC06_032_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa67e4, data, tail8] - [0xa6868, .rodata, ov_SC06_032_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa689c, data, tail8] + - [0xa689c, data, tail9] - [0xa68a0, .rodata, ov_SC06_032_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa68bc, data, tail9] + - [0xa68bc, data, tail10] - [0xa68c0, .rodata, ov_SC06_032_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa68dc, data, tail10] + - [0xa68dc, data, tail11] - [0xa6900, .rodata, ov_SC06_032_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa691c, data, tail11] + - [0xa691c, data, tail12] - [0xa6934, .rodata, ov_SC06_032_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6954, data, tail12] + - [0xa6954, data, tail13] - [0xa69d4, .rodata, ov_SC06_032_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa69e8, data, tail13] + - [0xa69e8, data, tail14] - [0xa6b90, .rodata, ov_SC06_032_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6d08, data, tail14] + - [0xa6d08, data, tail15] - [0xa6d98, .rodata, ov_SC06_032_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6e24, data, tail15] + - [0xa6e24, data, tail16] - [0xa6e3c, .rodata, ov_SC06_032_jr_8017C24C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6e5c, data, tail16] + - [0xa6e5c, data, tail17] - [0xA9014, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA9017] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC06_033.yaml b/config/splat.ov_SC06_033.yaml index 3212a84d9..4d5189ecf 100644 --- a/config/splat.ov_SC06_033.yaml +++ b/config/splat.ov_SC06_033.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC06_033_after] - [0x2c2f4, c, ov_SC06_033_jr_8015444C] - [0x2cacc, c, ov_SC06_033_jr_80154C24] + - [0x30774, c, ov_SC06_033_jr_801588CC] - [0x31b2c, c, ov_SC06_033_jr_80159C84] - [0x32270, c, ov_SC06_033_jr_8015A3C8] - [0x32cd4, c, ov_SC06_033_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xa67c0, data, tail6] - [0xa6830, .rodata, ov_SC06_033_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa6854, data, tail7] + - [0xa6874, .rodata, ov_SC06_033_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa6898, data, tail8] - [0xa691c, .rodata, ov_SC06_033_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6950, data, tail8] + - [0xa6950, data, tail9] - [0xa6954, .rodata, ov_SC06_033_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6970, data, tail9] + - [0xa6970, data, tail10] - [0xa6974, .rodata, ov_SC06_033_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6990, data, tail10] + - [0xa6990, data, tail11] - [0xa69b4, .rodata, ov_SC06_033_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa69d0, data, tail11] + - [0xa69d0, data, tail12] - [0xa69e8, .rodata, ov_SC06_033_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6a08, data, tail12] + - [0xa6a08, data, tail13] - [0xa6a88, .rodata, ov_SC06_033_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6a9c, data, tail13] + - [0xa6a9c, data, tail14] - [0xa6c44, .rodata, ov_SC06_033_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6dbc, data, tail14] + - [0xa6dbc, data, tail15] - [0xa6e4c, .rodata, ov_SC06_033_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6ed8, data, tail15] + - [0xa6ed8, data, tail16] - [0xa6ef0, .rodata, ov_SC06_033_jr_8017C24C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6f10, data, tail16] + - [0xa6f10, data, tail17] - [0xA8E94, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA8E97] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC07_000.yaml b/config/splat.ov_SC07_000.yaml index ad1cf0626..a2705ae05 100644 --- a/config/splat.ov_SC07_000.yaml +++ b/config/splat.ov_SC07_000.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC07_000_after] - [0x2c2f4, c, ov_SC07_000_jr_8015444C] - [0x2cacc, c, ov_SC07_000_jr_80154C24] + - [0x30774, c, ov_SC07_000_jr_801588CC] - [0x31b2c, c, ov_SC07_000_jr_80159C84] - [0x32270, c, ov_SC07_000_jr_8015A3C8] - [0x32cd4, c, ov_SC07_000_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0xa5e1c, data, tail6] - [0xa5e8c, .rodata, ov_SC07_000_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa5eb0, data, tail7] + - [0xa5ed0, .rodata, ov_SC07_000_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xa5ef4, data, tail8] - [0xa5f78, .rodata, ov_SC07_000_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa5fac, data, tail8] + - [0xa5fac, data, tail9] - [0xa5fb0, .rodata, ov_SC07_000_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa5fcc, data, tail9] + - [0xa5fcc, data, tail10] - [0xa5fd0, .rodata, ov_SC07_000_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa5fec, data, tail10] + - [0xa5fec, data, tail11] - [0xa6010, .rodata, ov_SC07_000_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa602c, data, tail11] + - [0xa602c, data, tail12] - [0xa6044, .rodata, ov_SC07_000_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6064, data, tail12] + - [0xa6064, data, tail13] - [0xa60e4, .rodata, ov_SC07_000_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa60f8, data, tail13] + - [0xa60f8, data, tail14] - [0xa62a0, .rodata, ov_SC07_000_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6418, data, tail14] + - [0xa6418, data, tail15] - [0xa64a8, .rodata, ov_SC07_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6534, data, tail15] + - [0xa6534, data, tail16] - [0xa654c, .rodata, ov_SC07_000_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa656c, data, tail16] + - [0xa656c, data, tail17] - [0xA8B8C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA8B8F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC07_001.yaml b/config/splat.ov_SC07_001.yaml index f67fb515f..7d69edb9d 100644 --- a/config/splat.ov_SC07_001.yaml +++ b/config/splat.ov_SC07_001.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC07_001_after] - [0x2c2f4, c, ov_SC07_001_jr_8015444C] - [0x2cacc, c, ov_SC07_001_jr_80154C24] + - [0x30774, c, ov_SC07_001_jr_801588CC] - [0x31b2c, c, ov_SC07_001_jr_80159C84] - [0x32270, c, ov_SC07_001_jr_8015A3C8] - [0x32cd4, c, ov_SC07_001_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x80fb8, data, tail6] - [0x81028, .rodata, ov_SC07_001_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8104c, data, tail7] + - [0x8106c, .rodata, ov_SC07_001_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x81090, data, tail8] - [0x81114, .rodata, ov_SC07_001_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x81148, data, tail8] + - [0x81148, data, tail9] - [0x8114c, .rodata, ov_SC07_001_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x81168, data, tail9] + - [0x81168, data, tail10] - [0x8116c, .rodata, ov_SC07_001_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x81188, data, tail10] + - [0x81188, data, tail11] - [0x811ac, .rodata, ov_SC07_001_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x811c8, data, tail11] + - [0x811c8, data, tail12] - [0x811e0, .rodata, ov_SC07_001_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x81200, data, tail12] + - [0x81200, data, tail13] - [0x81280, .rodata, ov_SC07_001_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x81294, data, tail13] + - [0x81294, data, tail14] - [0x8143c, .rodata, ov_SC07_001_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x815b4, data, tail14] + - [0x815b4, data, tail15] - [0x81644, .rodata, ov_SC07_001_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x816d0, data, tail15] + - [0x816d0, data, tail16] - [0x816e8, .rodata, ov_SC07_001_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x81708, data, tail16] + - [0x81708, data, tail17] - [0x82DB4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x82DB7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC07_002.yaml b/config/splat.ov_SC07_002.yaml index e57ee79c3..dcffc4704 100644 --- a/config/splat.ov_SC07_002.yaml +++ b/config/splat.ov_SC07_002.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC07_002_after] - [0x2c2f4, c, ov_SC07_002_jr_8015444C] - [0x2cacc, c, ov_SC07_002_jr_80154C24] + - [0x30774, c, ov_SC07_002_jr_801588CC] - [0x31b2c, c, ov_SC07_002_jr_80159C84] - [0x32270, c, ov_SC07_002_jr_8015A3C8] - [0x32cd4, c, ov_SC07_002_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x719a0, data, tail6] - [0x71a10, .rodata, ov_SC07_002_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x71a34, data, tail7] + - [0x71a54, .rodata, ov_SC07_002_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x71a78, data, tail8] - [0x71afc, .rodata, ov_SC07_002_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71b30, data, tail8] + - [0x71b30, data, tail9] - [0x71b34, .rodata, ov_SC07_002_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71b50, data, tail9] + - [0x71b50, data, tail10] - [0x71b54, .rodata, ov_SC07_002_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71b70, data, tail10] + - [0x71b70, data, tail11] - [0x71b94, .rodata, ov_SC07_002_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71bb0, data, tail11] + - [0x71bb0, data, tail12] - [0x71bc8, .rodata, ov_SC07_002_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71be8, data, tail12] + - [0x71be8, data, tail13] - [0x71c68, .rodata, ov_SC07_002_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71c7c, data, tail13] + - [0x71c7c, data, tail14] - [0x71e24, .rodata, ov_SC07_002_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x71f9c, data, tail14] + - [0x71f9c, data, tail15] - [0x7202c, .rodata, ov_SC07_002_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x720b8, data, tail15] + - [0x720b8, data, tail16] - [0x72208, .rodata, ov_SC07_002_jr_8017C8D0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x72228, data, tail16] + - [0x72228, data, tail17] - [0x77F7C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x77F7F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC07_006.yaml b/config/splat.ov_SC07_006.yaml index 1bd2d4f13..8ea43aeab 100644 --- a/config/splat.ov_SC07_006.yaml +++ b/config/splat.ov_SC07_006.yaml @@ -97,6 +97,7 @@ segments: - [0x91e8, c, ov_SC07_006_jr_80131340] - [0x171f8, c, ov_SC07_006_jr_8013F350] - [0x2cacc, c, ov_SC07_006_jr_80154C24] + - [0x30774, c, ov_SC07_006_jr_801588CC] - [0x341d4, c, ov_SC07_006_jr_8015C32C] - [0x53d64, c, ov_SC07_006_jr_8017BEBC] - [0x62268, data, tail] @@ -106,10 +107,12 @@ segments: - [0xcc318, data, tail3] - [0xcc494, .rodata, ov_SC07_006_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xcc4b8, data, tail4] + - [0xcc4d8, .rodata, ov_SC07_006_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xcc4fc, data, tail5] - [0xcc618, .rodata, ov_SC07_006_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xcc634, data, tail5] + - [0xcc634, data, tail6] - [0xccb54, .rodata, ov_SC07_006_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xccb74, data, tail6] + - [0xccb74, data, tail7] - [0xCE214, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xCE217] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC07_007.yaml b/config/splat.ov_SC07_007.yaml index b93503025..8e4a7d5dc 100644 --- a/config/splat.ov_SC07_007.yaml +++ b/config/splat.ov_SC07_007.yaml @@ -97,6 +97,7 @@ segments: - [0x91e8, c, ov_SC07_007_jr_80131340] - [0x171f8, c, ov_SC07_007_jr_8013F350] - [0x2cacc, c, ov_SC07_007_jr_80154C24] + - [0x30774, c, ov_SC07_007_jr_801588CC] - [0x341d4, c, ov_SC07_007_jr_8015C32C] - [0x53d64, c, ov_SC07_007_jr_8017BEBC] - [0x5ad8c, data, tail] @@ -106,10 +107,12 @@ segments: - [0x9daf4, data, tail3] - [0x9dc70, .rodata, ov_SC07_007_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x9dc94, data, tail4] + - [0x9dcb4, .rodata, ov_SC07_007_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9dcd8, data, tail5] - [0x9ddf4, .rodata, ov_SC07_007_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9de10, data, tail5] + - [0x9de10, data, tail6] - [0x9e330, .rodata, ov_SC07_007_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x9e350, data, tail6] + - [0x9e350, data, tail7] - [0x9F9DC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x9F9DF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC07_008.yaml b/config/splat.ov_SC07_008.yaml index 31b64fe4d..6a894aaae 100644 --- a/config/splat.ov_SC07_008.yaml +++ b/config/splat.ov_SC07_008.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC07_008_after] - [0x2c2f4, c, ov_SC07_008_jr_8015444C] - [0x2cacc, c, ov_SC07_008_jr_80154C24] + - [0x30774, c, ov_SC07_008_jr_801588CC] - [0x31b2c, c, ov_SC07_008_jr_80159C84] - [0x32270, c, ov_SC07_008_jr_8015A3C8] - [0x32cd4, c, ov_SC07_008_jr_8015AE2C] @@ -124,24 +125,26 @@ segments: - [0x6c9f0, data, tail6] - [0x6ca60, .rodata, ov_SC07_008_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6ca84, data, tail7] + - [0x6caa4, .rodata, ov_SC07_008_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x6cac8, data, tail8] - [0x6cb4c, .rodata, ov_SC07_008_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6cb80, data, tail8] + - [0x6cb80, data, tail9] - [0x6cb84, .rodata, ov_SC07_008_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6cba0, data, tail9] + - [0x6cba0, data, tail10] - [0x6cba4, .rodata, ov_SC07_008_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6cbc0, data, tail10] + - [0x6cbc0, data, tail11] - [0x6cbe4, .rodata, ov_SC07_008_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6cc00, data, tail11] + - [0x6cc00, data, tail12] - [0x6cc18, .rodata, ov_SC07_008_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6cc38, data, tail12] + - [0x6cc38, data, tail13] - [0x6ccb8, .rodata, ov_SC07_008_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6cccc, data, tail13] + - [0x6cccc, data, tail14] - [0x6ce74, .rodata, ov_SC07_008_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6cfec, data, tail14] + - [0x6cfec, data, tail15] - [0x6d07c, .rodata, ov_SC07_008_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6d108, data, tail15] + - [0x6d108, data, tail16] - [0x6d120, .rodata, ov_SC07_008_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x6d140, data, tail16] + - [0x6d140, data, tail17] - [0x6E5EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x6E5EF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC07_009.yaml b/config/splat.ov_SC07_009.yaml index b84609e5a..3af84f60d 100644 --- a/config/splat.ov_SC07_009.yaml +++ b/config/splat.ov_SC07_009.yaml @@ -102,6 +102,7 @@ segments: - [0x1d64c, c, ov_SC07_009_after] - [0x2c2f4, c, ov_SC07_009_jr_8015444C] - [0x2cacc, c, ov_SC07_009_jr_80154C24] + - [0x30774, c, ov_SC07_009_jr_801588CC] - [0x31b2c, c, ov_SC07_009_jr_80159C84] - [0x32270, c, ov_SC07_009_jr_8015A3C8] - [0x32cd4, c, ov_SC07_009_jr_8015AE2C] @@ -123,22 +124,24 @@ segments: - [0x7a07c, data, tail6] - [0x7a0ec, .rodata, ov_SC07_009_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7a110, data, tail7] + - [0x7a130, .rodata, ov_SC07_009_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7a154, data, tail8] - [0x7a1d8, .rodata, ov_SC07_009_jr_80159C84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7a20c, data, tail8] + - [0x7a20c, data, tail9] - [0x7a210, .rodata, ov_SC07_009_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7a22c, data, tail9] + - [0x7a22c, data, tail10] - [0x7a230, .rodata, ov_SC07_009_jr_8015AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7a24c, data, tail10] + - [0x7a24c, data, tail11] - [0x7a270, .rodata, ov_SC07_009_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7a28c, data, tail11] + - [0x7a28c, data, tail12] - [0x7a2a4, .rodata, ov_SC07_009_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7a2c4, data, tail12] + - [0x7a2c4, data, tail13] - [0x7a344, .rodata, ov_SC07_009_jr_801734BC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7a358, data, tail13] + - [0x7a358, data, tail14] - [0x7a500, .rodata, ov_SC07_009_jr_80178D40] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7a678, data, tail14] + - [0x7a678, data, tail15] - [0x7a708, .rodata, ov_SC07_009_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7a794, data, tail15] + - [0x7a794, data, tail16] - [0x7BC7C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x7BC7F] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC07_010.yaml b/config/splat.ov_SC07_010.yaml index 43f4bec58..6aec03329 100644 --- a/config/splat.ov_SC07_010.yaml +++ b/config/splat.ov_SC07_010.yaml @@ -98,6 +98,7 @@ segments: - [0x14834, c, ov_SC07_010_o2b] - [0x171f8, c, ov_SC07_010_jr_8013F350] - [0x2cacc, c, ov_SC07_010_jr_80154C24] + - [0x30774, c, ov_SC07_010_jr_801588CC] - [0x341d4, c, ov_SC07_010_jr_8015C32C] - [0x59e1c, data, tail] - [0x7d884, .rodata, ov_SC07_010] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -106,8 +107,10 @@ segments: - [0x7dfd4, data, tail3] - [0x7e150, .rodata, ov_SC07_010_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x7e174, data, tail4] + - [0x7e194, .rodata, ov_SC07_010_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x7e1b8, data, tail5] - [0x7e2d4, .rodata, ov_SC07_010_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x7e2f0, data, tail5] + - [0x7e2f0, data, tail6] - [0x813EC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x813EF] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/config/splat.ov_SC07_011.yaml b/config/splat.ov_SC07_011.yaml index 7924deb7b..ebb32bf23 100644 --- a/config/splat.ov_SC07_011.yaml +++ b/config/splat.ov_SC07_011.yaml @@ -97,6 +97,7 @@ segments: - [0x91e8, c, ov_SC07_011_jr_80131340] - [0x171f8, c, ov_SC07_011_jr_8013F350] - [0x2cacc, c, ov_SC07_011_jr_80154C24] + - [0x30774, c, ov_SC07_011_jr_801588CC] - [0x341d4, c, ov_SC07_011_jr_8015C32C] - [0x53d64, c, ov_SC07_011_jr_8017BEBC] - [0x564dc, data, tail] @@ -106,10 +107,12 @@ segments: - [0x6669c, data, tail3] - [0x66818, .rodata, ov_SC07_011_jr_80154C24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x6683c, data, tail4] + - [0x6685c, .rodata, ov_SC07_011_jr_801588CC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x66880, data, tail5] - [0x6699c, .rodata, ov_SC07_011_jr_8015C32C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x669b8, data, tail5] + - [0x669b8, data, tail6] - [0x66ed8, .rodata, ov_SC07_011_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x66ef8, data, tail6] + - [0x66ef8, data, tail7] - [0x683A4, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x683A7] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/src/ov_SC01_000/ov_SC01_000_jr_80154C24.c b/src/ov_SC01_000/ov_SC01_000_jr_80154C24.c index cac8e2b89..1c14fd39d 100644 --- a/src/ov_SC01_000/ov_SC01_000_jr_80154C24.c +++ b/src/ov_SC01_000/ov_SC01_000_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180FA4[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A45B0; - -void func_80158BB0(void *arg0) { - if (D_801A45B0 == 0) { - D_801A45B0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A45BC; -extern s32 D_80180F78[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A45BC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180F78[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A45C0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A45C0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A45B0; -extern s32 D_801A45B8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A45B0 == 4) { - D_801A45B0 = 5; - } - if (D_801A45B8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80180FE0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80180FE0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000_jr_80154C24", func_801594E8); - - -extern void (*D_801811F4[])(void); - -void func_80159698(void *a0) { - D_801811F4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80181014)); - func_80028620(1, &(*(u8 *)&D_80181014) + 0x10); - func_80028620(2, &(*(u8 *)&D_80181014) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80181298[])(void); - -void func_80159968(void *a0) { - D_80181298[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801813EC[])(void); - -void func_80159B70(void *a0) { - D_801813EC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80181208; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181208); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC01_000/ov_SC01_000_jr_801588CC.c b/src/ov_SC01_000/ov_SC01_000_jr_801588CC.c new file mode 100644 index 000000000..2b613ec1a --- /dev/null +++ b/src/ov_SC01_000/ov_SC01_000_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80181140; +extern u8 D_801810B0; +extern u8 D_8018108C; +extern u8 D_80181068; +extern u8 D_8018111C; +extern u8 D_801810F8; +extern u8 D_801810D4; +extern u8 D_80181044; +extern void func_80145934(void); +extern u8 D_801811D0; +extern u8 D_801811AC; +extern u8 D_80181188; +extern u8 D_80181164; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801805C8[]; +extern unsigned char D_801805F8[]; +extern unsigned char D_80180648[]; +extern unsigned char D_80180678[]; +extern unsigned char D_801806A8[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801806F8[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801807C0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180848[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180850; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A4570; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A4574; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180880; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80180928[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018094C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018093C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80180960[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018096C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018097C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80180994[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180984; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801809A8[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801809C4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801809B4; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801809D8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801809EC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80180A00; +extern void (*D_80180A28[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180A08; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80180A34[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80180A74[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80180A78[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80180C6C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80180EDC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80180EEC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A45A8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180F14[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180EF4; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180F04; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180F54[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80180F5C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180F28; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80180F68[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180F38; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A45B0; +extern s32 D_801A45BC; +extern s32 D_801A45C0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180FA4[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A45B0; +extern int D_801A45BC; +extern int D_801A45C0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80180FA8[])(void); + extern int D_801A45B4; + extern int D_801A45B8; + short sVar1; + + D_80180FA8[*(unsigned short *)(param_1 + 2)](); + switch (D_801A45B0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A45B8 = 0; + D_801A45B4 = 0x46; + D_801A45B0 += 1; + break; + case 2: + if (D_801A45B4 == 0) { + if (SsGetMute() == 0) { + D_801A45B0 += 1; + } + } else { + D_801A45B4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A45B0 += 1; + } + break; + case 4: + D_801A45BC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A45B4 = 0xd2; + } else { + D_801A45B4 = 1; + } + break; + case 5: + D_801A45B4 -= 1; + if (D_801A45B4 == -1 || D_801A45C0 != 0) { + D_801A45B4 = 0; + D_801A45B0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A45B4 = 0x28; + D_801A45B0 += 1; + break; + case 7: + if (D_801A45B4 == 0) { + if (SsGetMute() == 0) { + D_801A45B0 += 1; + } + } else { + D_801A45B4 -= 1; + } + break; + case 8: + D_801A45B8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A45B0; + +void func_80158BB0(void *arg0) { + if (D_801A45B0 == 0) { + D_801A45B0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A45BC; +extern s32 D_80180F78[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A45BC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180F78[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A45C0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A45C0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A45B0; +extern s32 D_801A45B8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A45B0 == 4) { + D_801A45B0 = 5; + } + if (D_801A45B8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80180FE0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80180FE0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000_jr_801588CC", func_801594E8); + + +extern void (*D_801811F4[])(void); + +void func_80159698(void *a0) { + D_801811F4[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80181014)); + func_80028620(1, &(*(u8 *)&D_80181014) + 0x10); + func_80028620(2, &(*(u8 *)&D_80181014) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80181298[])(void); + +void func_80159968(void *a0) { + D_80181298[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801813EC[])(void); + +void func_80159B70(void *a0) { + D_801813EC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80181208; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181208); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC01_001/ov_SC01_001_jr_80154C24.c b/src/ov_SC01_001/ov_SC01_001_jr_80154C24.c index 901908578..b56908c44 100644 --- a/src/ov_SC01_001/ov_SC01_001_jr_80154C24.c +++ b/src/ov_SC01_001/ov_SC01_001_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80185BF4[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801EC840; - -void func_80158BB0(void *arg0) { - if (D_801EC840 == 0) { - D_801EC840 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801EC84C; -extern s32 D_80185BC8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801EC84C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80185BC8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801EC850; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801EC850 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801EC840; -extern s32 D_801EC848; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801EC840 == 4) { - D_801EC840 = 5; - } - if (D_801EC848 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80185C30[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80185C30; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_80154C24", func_801594E8); - - -extern void (*D_80185E44[])(void); - -void func_80159698(void *a0) { - D_80185E44[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80185C64)); - func_80028620(1, &(*(u8 *)&D_80185C64) + 0x10); - func_80028620(2, &(*(u8 *)&D_80185C64) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80185EE8[])(void); - -void func_80159968(void *a0) { - D_80185EE8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018603C[])(void); - -void func_80159B70(void *a0) { - D_8018603C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80185E58; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80185E58); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC01_001/ov_SC01_001_jr_801588CC.c b/src/ov_SC01_001/ov_SC01_001_jr_801588CC.c new file mode 100644 index 000000000..2cc60bf49 --- /dev/null +++ b/src/ov_SC01_001/ov_SC01_001_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80185D90; +extern u8 D_80185D00; +extern u8 D_80185CDC; +extern u8 D_80185CB8; +extern u8 D_80185D6C; +extern u8 D_80185D48; +extern u8 D_80185D24; +extern u8 D_80185C94; +extern void func_80145934(void); +extern u8 D_80185E20; +extern u8 D_80185DFC; +extern u8 D_80185DD8; +extern u8 D_80185DB4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80185218[]; +extern unsigned char D_80185248[]; +extern unsigned char D_80185298[]; +extern unsigned char D_801852C8[]; +extern unsigned char D_801852F8[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80185348[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80185410[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80185498[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801854A0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801EC800; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801EC804; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801854D0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80185578[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018559C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018558C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801855B0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801855BC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801855CC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801855E4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801855D4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801855F8[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80185614[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80185604; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80185628[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018563C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80185650; +extern void (*D_80185678[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80185658; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80185684[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801856C4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801856C8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801858BC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80185B2C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80185B3C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801EC838; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80185B64[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80185B44; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80185B54; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80185BA4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80185BAC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80185B78; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80185BB8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80185B88; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801EC840; +extern s32 D_801EC84C; +extern s32 D_801EC850; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80185BF4[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801EC840; +extern int D_801EC84C; +extern int D_801EC850; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80185BF8[])(void); + extern int D_801EC844; + extern int D_801EC848; + short sVar1; + + D_80185BF8[*(unsigned short *)(param_1 + 2)](); + switch (D_801EC840) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801EC848 = 0; + D_801EC844 = 0x46; + D_801EC840 += 1; + break; + case 2: + if (D_801EC844 == 0) { + if (SsGetMute() == 0) { + D_801EC840 += 1; + } + } else { + D_801EC844 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801EC840 += 1; + } + break; + case 4: + D_801EC84C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801EC844 = 0xd2; + } else { + D_801EC844 = 1; + } + break; + case 5: + D_801EC844 -= 1; + if (D_801EC844 == -1 || D_801EC850 != 0) { + D_801EC844 = 0; + D_801EC840 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801EC844 = 0x28; + D_801EC840 += 1; + break; + case 7: + if (D_801EC844 == 0) { + if (SsGetMute() == 0) { + D_801EC840 += 1; + } + } else { + D_801EC844 -= 1; + } + break; + case 8: + D_801EC848 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801EC840; + +void func_80158BB0(void *arg0) { + if (D_801EC840 == 0) { + D_801EC840 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801EC84C; +extern s32 D_80185BC8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801EC84C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80185BC8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801EC850; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801EC850 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801EC840; +extern s32 D_801EC848; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801EC840 == 4) { + D_801EC840 = 5; + } + if (D_801EC848 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80185C30[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80185C30; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_801588CC", func_801594E8); + + +extern void (*D_80185E44[])(void); + +void func_80159698(void *a0) { + D_80185E44[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80185C64)); + func_80028620(1, &(*(u8 *)&D_80185C64) + 0x10); + func_80028620(2, &(*(u8 *)&D_80185C64) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80185EE8[])(void); + +void func_80159968(void *a0) { + D_80185EE8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018603C[])(void); + +void func_80159B70(void *a0) { + D_8018603C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80185E58; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80185E58); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC01_004/ov_SC01_004_jr_80154C24.c b/src/ov_SC01_004/ov_SC01_004_jr_80154C24.c index aaf70af8e..382224b39 100644 --- a/src/ov_SC01_004/ov_SC01_004_jr_80154C24.c +++ b/src/ov_SC01_004/ov_SC01_004_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801815B8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8018EFA8; - -void func_80158BB0(void *arg0) { - if (D_8018EFA8 == 0) { - D_8018EFA8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8018EFB4; -extern s32 D_8018158C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8018EFB4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018158C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8018EFB8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8018EFB8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8018EFA8; -extern s32 D_8018EFB0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8018EFA8 == 4) { - D_8018EFA8 = 5; - } - if (D_8018EFB0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801815F4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801815F4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_80154C24", func_801594E8); - - -extern void (*D_80181808[])(void); - -void func_80159698(void *a0) { - D_80181808[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80181628)); - func_80028620(1, &(*(u8 *)&D_80181628) + 0x10); - func_80028620(2, &(*(u8 *)&D_80181628) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801818AC[])(void); - -void func_80159968(void *a0) { - D_801818AC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80181A00[])(void); - -void func_80159B70(void *a0) { - D_80181A00[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018181C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018181C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC01_004/ov_SC01_004_jr_801588CC.c b/src/ov_SC01_004/ov_SC01_004_jr_801588CC.c new file mode 100644 index 000000000..6f77a7474 --- /dev/null +++ b/src/ov_SC01_004/ov_SC01_004_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80181754; +extern u8 D_801816C4; +extern u8 D_801816A0; +extern u8 D_8018167C; +extern u8 D_80181730; +extern u8 D_8018170C; +extern u8 D_801816E8; +extern u8 D_80181658; +extern void func_80145934(void); +extern u8 D_801817E4; +extern u8 D_801817C0; +extern u8 D_8018179C; +extern u8 D_80181778; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80180BDC[]; +extern unsigned char D_80180C0C[]; +extern unsigned char D_80180C5C[]; +extern unsigned char D_80180C8C[]; +extern unsigned char D_80180CBC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80180D0C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80180DD4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180E5C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180E64; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8018EF68; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8018EF6C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180E94; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80180F3C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180F60[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80180F50; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80180F74[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80180F80[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80180F90[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80180FA8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180F98; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80180FBC[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80180FD8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180FC8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80180FEC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80181000[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80181014; +extern void (*D_8018103C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018101C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80181048[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80181088[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018108C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80181280[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801814F0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80181500[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8018EFA0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181528[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80181508; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80181518; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80181568[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80181570[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018153C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018157C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018154C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8018EFA8; +extern s32 D_8018EFB4; +extern s32 D_8018EFB8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801815B8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8018EFA8; +extern int D_8018EFB4; +extern int D_8018EFB8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801815BC[])(void); + extern int D_8018EFAC; + extern int D_8018EFB0; + short sVar1; + + D_801815BC[*(unsigned short *)(param_1 + 2)](); + switch (D_8018EFA8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8018EFB0 = 0; + D_8018EFAC = 0x46; + D_8018EFA8 += 1; + break; + case 2: + if (D_8018EFAC == 0) { + if (SsGetMute() == 0) { + D_8018EFA8 += 1; + } + } else { + D_8018EFAC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8018EFA8 += 1; + } + break; + case 4: + D_8018EFB4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8018EFAC = 0xd2; + } else { + D_8018EFAC = 1; + } + break; + case 5: + D_8018EFAC -= 1; + if (D_8018EFAC == -1 || D_8018EFB8 != 0) { + D_8018EFAC = 0; + D_8018EFA8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8018EFAC = 0x28; + D_8018EFA8 += 1; + break; + case 7: + if (D_8018EFAC == 0) { + if (SsGetMute() == 0) { + D_8018EFA8 += 1; + } + } else { + D_8018EFAC -= 1; + } + break; + case 8: + D_8018EFB0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8018EFA8; + +void func_80158BB0(void *arg0) { + if (D_8018EFA8 == 0) { + D_8018EFA8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8018EFB4; +extern s32 D_8018158C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8018EFB4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018158C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8018EFB8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8018EFB8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8018EFA8; +extern s32 D_8018EFB0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8018EFA8 == 4) { + D_8018EFA8 = 5; + } + if (D_8018EFB0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801815F4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801815F4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_801588CC", func_801594E8); + + +extern void (*D_80181808[])(void); + +void func_80159698(void *a0) { + D_80181808[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80181628)); + func_80028620(1, &(*(u8 *)&D_80181628) + 0x10); + func_80028620(2, &(*(u8 *)&D_80181628) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801818AC[])(void); + +void func_80159968(void *a0) { + D_801818AC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80181A00[])(void); + +void func_80159B70(void *a0) { + D_80181A00[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018181C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018181C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC01_005/ov_SC01_005_jr_80154C24.c b/src/ov_SC01_005/ov_SC01_005_jr_80154C24.c index 34d4e03d5..8077e2133 100644 --- a/src/ov_SC01_005/ov_SC01_005_jr_80154C24.c +++ b/src/ov_SC01_005/ov_SC01_005_jr_80154C24.c @@ -1683,342 +1683,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018474C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801CC708; - -void func_80158BB0(void *arg0) { - if (D_801CC708 == 0) { - D_801CC708 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801CC714; -extern s32 D_80184720[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801CC714; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80184720[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801CC718; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801CC718 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801CC708; -extern s32 D_801CC710; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801CC708 == 4) { - D_801CC708 = 5; - } - if (D_801CC710 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184788[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184788; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_80154C24", func_801594E8); - - -extern void (*D_8018499C[])(void); - -void func_80159698(void *a0) { - D_8018499C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801847BC)); - func_80028620(1, &(*(u8 *)&D_801847BC) + 0x10); - func_80028620(2, &(*(u8 *)&D_801847BC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80184A40[])(void); - -void func_80159968(void *a0) { - D_80184A40[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80184B94[])(void); - -void func_80159B70(void *a0) { - D_80184B94[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801849B0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801849B0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC01_005/ov_SC01_005_jr_801588CC.c b/src/ov_SC01_005/ov_SC01_005_jr_801588CC.c new file mode 100644 index 000000000..c092bf367 --- /dev/null +++ b/src/ov_SC01_005/ov_SC01_005_jr_801588CC.c @@ -0,0 +1,1537 @@ +#include "common.h" +#include "../shared/engine_core.h" +#include "../shared/ov_setters.h" /* dedup share across the SC01/005 ≡ 006 pair (cookbook §11) */ + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801848E8; +extern u8 D_80184858; +extern u8 D_80184834; +extern u8 D_80184810; +extern u8 D_801848C4; +extern u8 D_801848A0; +extern u8 D_8018487C; +extern u8 D_801847EC; +extern void func_80145934(void); +extern u8 D_80184978; +extern u8 D_80184954; +extern u8 D_80184930; +extern u8 D_8018490C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80183D70[]; +extern unsigned char D_80183DA0[]; +extern unsigned char D_80183DF0[]; +extern unsigned char D_80183E20[]; +extern unsigned char D_80183E50[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80183EA0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80183F68[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80183FF0[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80183FF8; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801CC6C8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801CC6CC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80184028; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801840D0[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801840F4[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801840E4; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80184108[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80184114[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80184124[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018413C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018412C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80184150[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018416C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018415C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80184180[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80184194[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801841A8; +extern void (*D_801841D0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801841B0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801841DC[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018421C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80184220[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80184414[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184684[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184694[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801CC700; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801846BC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018469C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801846AC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801846FC[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80184704[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801846D0; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80184710[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801846E0; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801CC708; +extern s32 D_801CC714; +extern s32 D_801CC718; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018474C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801CC708; +extern int D_801CC714; +extern int D_801CC718; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80184750[])(void); + extern int D_801CC70C; + extern int D_801CC710; + short sVar1; + + D_80184750[*(unsigned short *)(param_1 + 2)](); + switch (D_801CC708) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801CC710 = 0; + D_801CC70C = 0x46; + D_801CC708 += 1; + break; + case 2: + if (D_801CC70C == 0) { + if (SsGetMute() == 0) { + D_801CC708 += 1; + } + } else { + D_801CC70C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801CC708 += 1; + } + break; + case 4: + D_801CC714 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801CC70C = 0xd2; + } else { + D_801CC70C = 1; + } + break; + case 5: + D_801CC70C -= 1; + if (D_801CC70C == -1 || D_801CC718 != 0) { + D_801CC70C = 0; + D_801CC708 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801CC70C = 0x28; + D_801CC708 += 1; + break; + case 7: + if (D_801CC70C == 0) { + if (SsGetMute() == 0) { + D_801CC708 += 1; + } + } else { + D_801CC70C -= 1; + } + break; + case 8: + D_801CC710 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801CC708; + +void func_80158BB0(void *arg0) { + if (D_801CC708 == 0) { + D_801CC708 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801CC714; +extern s32 D_80184720[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801CC714; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80184720[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801CC718; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801CC718 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801CC708; +extern s32 D_801CC710; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801CC708 == 4) { + D_801CC708 = 5; + } + if (D_801CC710 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184788[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184788; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_801588CC", func_801594E8); + + +extern void (*D_8018499C[])(void); + +void func_80159698(void *a0) { + D_8018499C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801847BC)); + func_80028620(1, &(*(u8 *)&D_801847BC) + 0x10); + func_80028620(2, &(*(u8 *)&D_801847BC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80184A40[])(void); + +void func_80159968(void *a0) { + D_80184A40[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80184B94[])(void); + +void func_80159B70(void *a0) { + D_80184B94[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801849B0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801849B0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC01_006/ov_SC01_006_jr_80154C24.c b/src/ov_SC01_006/ov_SC01_006_jr_80154C24.c index c374a3de9..3e480b45e 100644 --- a/src/ov_SC01_006/ov_SC01_006_jr_80154C24.c +++ b/src/ov_SC01_006/ov_SC01_006_jr_80154C24.c @@ -1683,342 +1683,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018474C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801CC708; - -void func_80158BB0(void *arg0) { - if (D_801CC708 == 0) { - D_801CC708 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801CC714; -extern s32 D_80184720[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801CC714; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80184720[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801CC718; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801CC718 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801CC708; -extern s32 D_801CC710; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801CC708 == 4) { - D_801CC708 = 5; - } - if (D_801CC710 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184788[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184788; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_80154C24", func_801594E8); - - -extern void (*D_8018499C[])(void); - -void func_80159698(void *a0) { - D_8018499C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801847BC)); - func_80028620(1, &(*(u8 *)&D_801847BC) + 0x10); - func_80028620(2, &(*(u8 *)&D_801847BC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80184A40[])(void); - -void func_80159968(void *a0) { - D_80184A40[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80184B94[])(void); - -void func_80159B70(void *a0) { - D_80184B94[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801849B0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801849B0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC01_006/ov_SC01_006_jr_801588CC.c b/src/ov_SC01_006/ov_SC01_006_jr_801588CC.c new file mode 100644 index 000000000..5486e1b31 --- /dev/null +++ b/src/ov_SC01_006/ov_SC01_006_jr_801588CC.c @@ -0,0 +1,1537 @@ +#include "common.h" +#include "../shared/engine_core.h" +#include "../shared/ov_setters.h" /* dedup share across the SC01/005 ≡ 006 pair (cookbook §11) */ + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801848E8; +extern u8 D_80184858; +extern u8 D_80184834; +extern u8 D_80184810; +extern u8 D_801848C4; +extern u8 D_801848A0; +extern u8 D_8018487C; +extern u8 D_801847EC; +extern void func_80145934(void); +extern u8 D_80184978; +extern u8 D_80184954; +extern u8 D_80184930; +extern u8 D_8018490C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80183D70[]; +extern unsigned char D_80183DA0[]; +extern unsigned char D_80183DF0[]; +extern unsigned char D_80183E20[]; +extern unsigned char D_80183E50[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80183EA0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80183F68[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80183FF0[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80183FF8; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801CC6C8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801CC6CC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80184028; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801840D0[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801840F4[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801840E4; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80184108[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80184114[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80184124[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018413C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018412C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80184150[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018416C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018415C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80184180[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80184194[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801841A8; +extern void (*D_801841D0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801841B0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801841DC[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018421C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80184220[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80184414[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184684[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184694[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801CC700; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801846BC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018469C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801846AC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801846FC[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80184704[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801846D0; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80184710[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801846E0; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801CC708; +extern s32 D_801CC714; +extern s32 D_801CC718; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018474C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801CC708; +extern int D_801CC714; +extern int D_801CC718; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80184750[])(void); + extern int D_801CC70C; + extern int D_801CC710; + short sVar1; + + D_80184750[*(unsigned short *)(param_1 + 2)](); + switch (D_801CC708) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801CC710 = 0; + D_801CC70C = 0x46; + D_801CC708 += 1; + break; + case 2: + if (D_801CC70C == 0) { + if (SsGetMute() == 0) { + D_801CC708 += 1; + } + } else { + D_801CC70C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801CC708 += 1; + } + break; + case 4: + D_801CC714 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801CC70C = 0xd2; + } else { + D_801CC70C = 1; + } + break; + case 5: + D_801CC70C -= 1; + if (D_801CC70C == -1 || D_801CC718 != 0) { + D_801CC70C = 0; + D_801CC708 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801CC70C = 0x28; + D_801CC708 += 1; + break; + case 7: + if (D_801CC70C == 0) { + if (SsGetMute() == 0) { + D_801CC708 += 1; + } + } else { + D_801CC70C -= 1; + } + break; + case 8: + D_801CC710 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801CC708; + +void func_80158BB0(void *arg0) { + if (D_801CC708 == 0) { + D_801CC708 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801CC714; +extern s32 D_80184720[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801CC714; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80184720[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801CC718; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801CC718 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801CC708; +extern s32 D_801CC710; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801CC708 == 4) { + D_801CC708 = 5; + } + if (D_801CC710 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184788[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184788; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_801588CC", func_801594E8); + + +extern void (*D_8018499C[])(void); + +void func_80159698(void *a0) { + D_8018499C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801847BC)); + func_80028620(1, &(*(u8 *)&D_801847BC) + 0x10); + func_80028620(2, &(*(u8 *)&D_801847BC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80184A40[])(void); + +void func_80159968(void *a0) { + D_80184A40[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80184B94[])(void); + +void func_80159B70(void *a0) { + D_80184B94[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801849B0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801849B0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC01_008/ov_SC01_008_jr_80154C24.c b/src/ov_SC01_008/ov_SC01_008_jr_80154C24.c index 63c2566e1..f55cc2275 100644 --- a/src/ov_SC01_008/ov_SC01_008_jr_80154C24.c +++ b/src/ov_SC01_008/ov_SC01_008_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80181B2C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A21B8; - -void func_80158BB0(void *arg0) { - if (D_801A21B8 == 0) { - D_801A21B8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A21C4; -extern s32 D_80181B00[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A21C4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80181B00[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A21C8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A21C8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A21B8; -extern s32 D_801A21C0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A21B8 == 4) { - D_801A21B8 = 5; - } - if (D_801A21C0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80181B68[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80181B68; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_80154C24", func_801594E8); - - -extern void (*D_80181D7C[])(void); - -void func_80159698(void *a0) { - D_80181D7C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80181B9C)); - func_80028620(1, &(*(u8 *)&D_80181B9C) + 0x10); - func_80028620(2, &(*(u8 *)&D_80181B9C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80181E20[])(void); - -void func_80159968(void *a0) { - D_80181E20[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80181F74[])(void); - -void func_80159B70(void *a0) { - D_80181F74[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80181D90; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181D90); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC01_008/ov_SC01_008_jr_801588CC.c b/src/ov_SC01_008/ov_SC01_008_jr_801588CC.c new file mode 100644 index 000000000..4278b95da --- /dev/null +++ b/src/ov_SC01_008/ov_SC01_008_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80181CC8; +extern u8 D_80181C38; +extern u8 D_80181C14; +extern u8 D_80181BF0; +extern u8 D_80181CA4; +extern u8 D_80181C80; +extern u8 D_80181C5C; +extern u8 D_80181BCC; +extern void func_80145934(void); +extern u8 D_80181D58; +extern u8 D_80181D34; +extern u8 D_80181D10; +extern u8 D_80181CEC; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80181150[]; +extern unsigned char D_80181180[]; +extern unsigned char D_801811D0[]; +extern unsigned char D_80181200[]; +extern unsigned char D_80181230[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80181280[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80181348[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801813D0[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801813D8; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A2178; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A217C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80181408; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801814B0[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801814D4[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801814C4; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801814E8[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801814F4[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80181504[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018151C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018150C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80181530[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018154C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018153C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80181560[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80181574[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80181588; +extern void (*D_801815B0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181590; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801815BC[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801815FC[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80181600[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801817F4[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80181A64[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80181A74[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A21B0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181A9C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80181A7C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80181A8C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80181ADC[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80181AE4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181AB0; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80181AF0[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80181AC0; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A21B8; +extern s32 D_801A21C4; +extern s32 D_801A21C8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181B2C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A21B8; +extern int D_801A21C4; +extern int D_801A21C8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80181B30[])(void); + extern int D_801A21BC; + extern int D_801A21C0; + short sVar1; + + D_80181B30[*(unsigned short *)(param_1 + 2)](); + switch (D_801A21B8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A21C0 = 0; + D_801A21BC = 0x46; + D_801A21B8 += 1; + break; + case 2: + if (D_801A21BC == 0) { + if (SsGetMute() == 0) { + D_801A21B8 += 1; + } + } else { + D_801A21BC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A21B8 += 1; + } + break; + case 4: + D_801A21C4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A21BC = 0xd2; + } else { + D_801A21BC = 1; + } + break; + case 5: + D_801A21BC -= 1; + if (D_801A21BC == -1 || D_801A21C8 != 0) { + D_801A21BC = 0; + D_801A21B8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A21BC = 0x28; + D_801A21B8 += 1; + break; + case 7: + if (D_801A21BC == 0) { + if (SsGetMute() == 0) { + D_801A21B8 += 1; + } + } else { + D_801A21BC -= 1; + } + break; + case 8: + D_801A21C0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A21B8; + +void func_80158BB0(void *arg0) { + if (D_801A21B8 == 0) { + D_801A21B8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A21C4; +extern s32 D_80181B00[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A21C4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80181B00[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A21C8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A21C8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A21B8; +extern s32 D_801A21C0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A21B8 == 4) { + D_801A21B8 = 5; + } + if (D_801A21C0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80181B68[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80181B68; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_801588CC", func_801594E8); + + +extern void (*D_80181D7C[])(void); + +void func_80159698(void *a0) { + D_80181D7C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80181B9C)); + func_80028620(1, &(*(u8 *)&D_80181B9C) + 0x10); + func_80028620(2, &(*(u8 *)&D_80181B9C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80181E20[])(void); + +void func_80159968(void *a0) { + D_80181E20[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80181F74[])(void); + +void func_80159B70(void *a0) { + D_80181F74[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80181D90; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181D90); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC01_009/ov_SC01_009_jr_80154C24.c b/src/ov_SC01_009/ov_SC01_009_jr_80154C24.c index 9306ab148..41e489dd7 100644 --- a/src/ov_SC01_009/ov_SC01_009_jr_80154C24.c +++ b/src/ov_SC01_009/ov_SC01_009_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80184D14[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801F2018; - -void func_80158BB0(void *arg0) { - if (D_801F2018 == 0) { - D_801F2018 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801F2024; -extern s32 D_80184CE8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801F2024; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80184CE8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801F2028; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801F2028 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801F2018; -extern s32 D_801F2020; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801F2018 == 4) { - D_801F2018 = 5; - } - if (D_801F2020 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184D50[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184D50; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_80154C24", func_801594E8); - - -extern void (*D_80184F64[])(void); - -void func_80159698(void *a0) { - D_80184F64[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80184D84)); - func_80028620(1, &(*(u8 *)&D_80184D84) + 0x10); - func_80028620(2, &(*(u8 *)&D_80184D84) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80185008[])(void); - -void func_80159968(void *a0) { - D_80185008[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018515C[])(void); - -void func_80159B70(void *a0) { - D_8018515C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80184F78; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184F78); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC01_009/ov_SC01_009_jr_801588CC.c b/src/ov_SC01_009/ov_SC01_009_jr_801588CC.c new file mode 100644 index 000000000..c6d39e34b --- /dev/null +++ b/src/ov_SC01_009/ov_SC01_009_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80184EB0; +extern u8 D_80184E20; +extern u8 D_80184DFC; +extern u8 D_80184DD8; +extern u8 D_80184E8C; +extern u8 D_80184E68; +extern u8 D_80184E44; +extern u8 D_80184DB4; +extern void func_80145934(void); +extern u8 D_80184F40; +extern u8 D_80184F1C; +extern u8 D_80184EF8; +extern u8 D_80184ED4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80184338[]; +extern unsigned char D_80184368[]; +extern unsigned char D_801843B8[]; +extern unsigned char D_801843E8[]; +extern unsigned char D_80184418[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80184468[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80184530[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801845B8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801845C0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801F1FD8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801F1FDC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801845F0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80184698[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801846BC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801846AC; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801846D0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801846DC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801846EC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80184704[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801846F4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80184718[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80184734[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80184724; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80184748[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018475C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80184770; +extern void (*D_80184798[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80184778; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801847A4[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801847E4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801847E8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801849DC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184C4C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184C5C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801F2010; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184C84[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80184C64; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80184C74; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80184CC4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80184CCC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184C98; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80184CD8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80184CA8; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801F2018; +extern s32 D_801F2024; +extern s32 D_801F2028; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184D14[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801F2018; +extern int D_801F2024; +extern int D_801F2028; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80184D18[])(void); + extern int D_801F201C; + extern int D_801F2020; + short sVar1; + + D_80184D18[*(unsigned short *)(param_1 + 2)](); + switch (D_801F2018) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801F2020 = 0; + D_801F201C = 0x46; + D_801F2018 += 1; + break; + case 2: + if (D_801F201C == 0) { + if (SsGetMute() == 0) { + D_801F2018 += 1; + } + } else { + D_801F201C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801F2018 += 1; + } + break; + case 4: + D_801F2024 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801F201C = 0xd2; + } else { + D_801F201C = 1; + } + break; + case 5: + D_801F201C -= 1; + if (D_801F201C == -1 || D_801F2028 != 0) { + D_801F201C = 0; + D_801F2018 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801F201C = 0x28; + D_801F2018 += 1; + break; + case 7: + if (D_801F201C == 0) { + if (SsGetMute() == 0) { + D_801F2018 += 1; + } + } else { + D_801F201C -= 1; + } + break; + case 8: + D_801F2020 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801F2018; + +void func_80158BB0(void *arg0) { + if (D_801F2018 == 0) { + D_801F2018 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801F2024; +extern s32 D_80184CE8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801F2024; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80184CE8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801F2028; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801F2028 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801F2018; +extern s32 D_801F2020; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801F2018 == 4) { + D_801F2018 = 5; + } + if (D_801F2020 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184D50[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184D50; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_801588CC", func_801594E8); + + +extern void (*D_80184F64[])(void); + +void func_80159698(void *a0) { + D_80184F64[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80184D84)); + func_80028620(1, &(*(u8 *)&D_80184D84) + 0x10); + func_80028620(2, &(*(u8 *)&D_80184D84) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80185008[])(void); + +void func_80159968(void *a0) { + D_80185008[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018515C[])(void); + +void func_80159B70(void *a0) { + D_8018515C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80184F78; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184F78); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC01_074/ov_SC01_074_jr_80154C24.c b/src/ov_SC01_074/ov_SC01_074_jr_80154C24.c index 8fd94bd58..12bba22d8 100644 --- a/src/ov_SC01_074/ov_SC01_074_jr_80154C24.c +++ b/src/ov_SC01_074/ov_SC01_074_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180994[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019AA98; - -void func_80158BB0(void *arg0) { - if (D_8019AA98 == 0) { - D_8019AA98 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019AAA4; -extern s32 D_80180968[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019AAA4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180968[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019AAA8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019AAA8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019AA98; -extern s32 D_8019AAA0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019AA98 == 4) { - D_8019AA98 = 5; - } - if (D_8019AAA0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801809D0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801809D0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_80154C24", func_801594E8); - - -extern void (*D_80180BE4[])(void); - -void func_80159698(void *a0) { - D_80180BE4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180A04)); - func_80028620(1, &(*(u8 *)&D_80180A04) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180A04) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80180C88[])(void); - -void func_80159968(void *a0) { - D_80180C88[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80180DDC[])(void); - -void func_80159B70(void *a0) { - D_80180DDC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80180BF8; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80180BF8); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC01_074/ov_SC01_074_jr_801588CC.c b/src/ov_SC01_074/ov_SC01_074_jr_801588CC.c new file mode 100644 index 000000000..3b1a51443 --- /dev/null +++ b/src/ov_SC01_074/ov_SC01_074_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80180B30; +extern u8 D_80180AA0; +extern u8 D_80180A7C; +extern u8 D_80180A58; +extern u8 D_80180B0C; +extern u8 D_80180AE8; +extern u8 D_80180AC4; +extern u8 D_80180A34; +extern void func_80145934(void); +extern u8 D_80180BC0; +extern u8 D_80180B9C; +extern u8 D_80180B78; +extern u8 D_80180B54; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8017FFB8[]; +extern unsigned char D_8017FFE8[]; +extern unsigned char D_80180038[]; +extern unsigned char D_80180068[]; +extern unsigned char D_80180098[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801800E8[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801801B0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180238[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180240; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019AA58; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019AA5C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180270; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80180318[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018033C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018032C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80180350[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018035C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018036C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80180384[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180374; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80180398[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801803B4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801803A4; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801803C8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801803DC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801803F0; +extern void (*D_80180418[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801803F8; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80180424[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80180464[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80180468[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018065C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801808CC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801808DC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019AA90; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180904[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801808E4; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801808F4; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180944[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018094C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180918; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80180958[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180928; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019AA98; +extern s32 D_8019AAA4; +extern s32 D_8019AAA8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180994[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019AA98; +extern int D_8019AAA4; +extern int D_8019AAA8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80180998[])(void); + extern int D_8019AA9C; + extern int D_8019AAA0; + short sVar1; + + D_80180998[*(unsigned short *)(param_1 + 2)](); + switch (D_8019AA98) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019AAA0 = 0; + D_8019AA9C = 0x46; + D_8019AA98 += 1; + break; + case 2: + if (D_8019AA9C == 0) { + if (SsGetMute() == 0) { + D_8019AA98 += 1; + } + } else { + D_8019AA9C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019AA98 += 1; + } + break; + case 4: + D_8019AAA4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019AA9C = 0xd2; + } else { + D_8019AA9C = 1; + } + break; + case 5: + D_8019AA9C -= 1; + if (D_8019AA9C == -1 || D_8019AAA8 != 0) { + D_8019AA9C = 0; + D_8019AA98 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019AA9C = 0x28; + D_8019AA98 += 1; + break; + case 7: + if (D_8019AA9C == 0) { + if (SsGetMute() == 0) { + D_8019AA98 += 1; + } + } else { + D_8019AA9C -= 1; + } + break; + case 8: + D_8019AAA0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019AA98; + +void func_80158BB0(void *arg0) { + if (D_8019AA98 == 0) { + D_8019AA98 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019AAA4; +extern s32 D_80180968[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019AAA4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180968[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019AAA8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019AAA8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019AA98; +extern s32 D_8019AAA0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019AA98 == 4) { + D_8019AA98 = 5; + } + if (D_8019AAA0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801809D0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801809D0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_801588CC", func_801594E8); + + +extern void (*D_80180BE4[])(void); + +void func_80159698(void *a0) { + D_80180BE4[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180A04)); + func_80028620(1, &(*(u8 *)&D_80180A04) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180A04) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80180C88[])(void); + +void func_80159968(void *a0) { + D_80180C88[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80180DDC[])(void); + +void func_80159B70(void *a0) { + D_80180DDC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80180BF8; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80180BF8); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC01_077/ov_SC01_077_jr_80154C24.c b/src/ov_SC01_077/ov_SC01_077_jr_80154C24.c index 51d37d3f1..2fcaf1929 100644 --- a/src/ov_SC01_077/ov_SC01_077_jr_80154C24.c +++ b/src/ov_SC01_077/ov_SC01_077_jr_80154C24.c @@ -1806,343 +1806,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80188EB8[*(u8 *)((s32)param + 0x4F)](param); } - -INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -// @class: plumbing -// @stuck: none — MATCH (expected); void-canonical callees called with param via fn-ptr cast (§17a-1) - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801D9658; - -void func_80158BB0(void *arg0) { - if (D_801D9658 == 0) { - D_801D9658 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -// @class: plumbing -// @stuck: none — modeled on byte-matched sibling DEFINE_func_80158C40 (identical skeleton) - -#include "common.h" - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801D9664; -extern s32 D_80188E8C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801D9664; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188E8C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801D9668; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801D9668 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801D9658; -extern s32 D_801D9660; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801D9658 == 4) { - D_801D9658 = 5; - } - if (D_801D9660 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - -// @class: other -// @stuck: none — MATCH (33 ins) -#include "common.h" - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80188EF4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80188EF4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - -INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_80154C24", func_801594E8); - -extern void (*D_80189108[])(void *); - -void func_80159698(void *a0) -{ - D_80189108[*(u8 *)((s32)a0 + 0x15)](a0); -} - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80188F28)); - func_80028620(1, &(*(u8 *)&D_80188F28) + 0x10); - func_80028620(2, &(*(u8 *)&D_80188F28) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - -extern void (*D_801891AC[])(void *); - -void func_80159968(void *a0) -{ - D_801891AC[*(u8 *)((s32)a0 + 0x4D)](a0); -} - -extern void (*D_801891B8[])(void *); - -void func_801599A4(void *a0) -{ - D_801891B8[*(u16 *)a0](a0); -} - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - -extern void (*D_80189300[])(void *); - -void func_80159B70(void *a0) -{ - D_80189300[*(u16 *)((s32)a0 + 0x2)](a0); -} - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018911C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018911C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC01_077/ov_SC01_077_jr_801588CC.c b/src/ov_SC01_077/ov_SC01_077_jr_801588CC.c new file mode 100644 index 000000000..d8299277a --- /dev/null +++ b/src/ov_SC01_077/ov_SC01_077_jr_801588CC.c @@ -0,0 +1,1586 @@ +#include "common.h" +#include "../shared/engine_core.h" + +/* ==== Phase-17 canonical-sig layer (tools/derive_canonical_sigs.py) =================== + * ONE byte-neutral canonical signature per undeclared-stub conflict callee, so the parallel + * hand-matching wave declares each shared callee consistently and the one-big-TU build stops + * failing on `conflicting types` (hand-matching-process.md §7c). Form: s32 return (void->s32 + * byte-neutral, §3a-1) + s32 params (matched bodies cast int->ptr), arity from Ghidra-C + asm + * read-before-write $a0-$a3 (agree on all 14 cached; 6 stubs call-site-validated). LOCAL to + * this TU on purpose (reach-1 names like func_801809BC differ across overlays, so NOT in the + * shared engine_core.h). Whole-binary harvest_verify byte-gate remains the sole arbiter (G3/P9). */ +extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ +extern s32 func_8012B4B8(s32 a0); /* match-first, arity 1 */ +extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); /* derive-decl, arity 4 */ +extern s32 func_80169A4C(s32 a0, s32 a1); /* match-first, arity 2 */ +extern s32 func_8016A8FC(s32 a0); /* match-first, arity 1 */ +extern s32 func_8012B8E4(s32 a0, s32 a1); /* match-first, arity 2 */ +extern s32 func_8015E1B8(s32 a0); /* match-first, arity 1 */ +extern s32 func_8015EE08(s32 a0); /* match-first, arity 1 */ +extern s32 func_8015F7D4(s32 a0); /* match-first, arity 1 */ +extern s32 func_80160B34(s32 a0); /* match-first, arity 1 */ +extern s32 func_80165140(s32 a0); /* match-first, arity 1 */ +extern s32 func_80161CD0(s32 a0, s32 a1); /* match-first, arity 2 */ +extern s32 func_80175268(s32 a0); /* match-first, arity 1 */ +extern s32 func_8017EC7C(s32 a0); /* match-first, arity 1 */ +extern s32 func_801809BC(s32 a0, s32 a1); /* match-first, arity 2 */ +extern s32 func_8012DE2C(s32 a0); /* derive-decl, arity 1 */ +extern s32 func_8012DDA4(void); /* derive-decl, arity 0 */ +extern s32 func_801759D8(void); /* derive-decl, arity 0 */ +extern s32 func_80175820(void); /* derive-decl, arity 0 */ +extern s32 func_801758FC(void); /* derive-decl, arity 0 */ +/* ==== end canonical-sig layer ==================================================== */ +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +struct S; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80189054; +extern u8 D_80188FC4; +extern u8 D_80188FA0; +extern u8 D_80188F7C; +extern u8 D_80189030; +extern u8 D_8018900C; +extern u8 D_80188FE8; +extern u8 D_80188F58; +extern void func_80145934(void); +extern u8 D_801890E4; +extern u8 D_801890C0; +extern u8 D_8018909C; +extern u8 D_80189078; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801884DC[]; +extern unsigned char D_8018850C[]; +extern unsigned char D_8018855C[]; +extern unsigned char D_8018858C[]; +extern unsigned char D_801885BC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018860C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 D_801151D4; +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern u8 D_80126C01; +extern u16 D_80126C02; +extern u16 D_80126C06; +extern s32 D_80188654[]; +extern s32 func_80148D44(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801886D4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018875C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80188764; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +s32 func_80135888(s32, s32, M2C_UNK, M2C_UNK); /* extern */ +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801D9618; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801D961C; +extern void func_8014FA04(s32 a0); +extern int func_8014FBC0(void); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80188794; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void (*D_80188798[])(void); +extern void func_80150B28(int param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018883C[])(void *); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80188860[])(void *); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80188850; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80188874[])(void *); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80188880[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80188890[])(void *); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801888A8[])(void *); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80188898; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801888BC[])(void *); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801888D8[])(void *); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801888C8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801888EC[])(void *); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80188900[])(void *); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +void func_8014ED28(s32 a0); +void func_80146D90(s32 a0); +void func_8014CC28(s32 a0); +void func_8014FA04(s32 a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80188914; +extern void (*D_8018893C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018891C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +void func_80154C24(s32 a0, s32 *a1, s32 *a2); +void func_80154F9C(s32 a0); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80188948[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80188988[])(void); +extern s32 func_80155458(s32 param_1); +s32 func_800D02D0(u8); /* extern */ +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018898C[])(void *); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern s32 func_80161208(void); +void func_80155E30(void *a0); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern void func_80156044(int arg, int a1); int func_80155FF8(int arg, int a1); +extern void func_80156044(int param_1, int param_2); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80188B80[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern void func_80013E94(void *a0, void *a1); +extern void func_80156A1C(s32 a0, s32 a1); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80188DF0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80188E00[])(void *); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801599A4(void *a0); /* canonical: void(*)(void *) */ +extern void func_80159B3C(void *a0); /* canonical: void(*)(void *) */ +extern s32 func_80161208(void); /* canonical: s32(*)(void) — call-site cast to pass arg0 */ +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801D9650; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80188E28[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80188E08; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80188E18; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80188E68[])(void *); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80188E70[])(void *); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80188E3C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80188E7C[])(void *); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80188E4C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801D9658; +extern s32 D_801D9664; +extern s32 D_801D9668; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188EB8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + +extern int D_801D9658; +extern int D_801D9664; +extern int D_801D9668; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80188EBC[])(void); + extern int D_801D965C; + extern int D_801D9660; + short sVar1; + + D_80188EBC[*(unsigned short *)(param_1 + 2)](); + switch (D_801D9658) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801D9660 = 0; + D_801D965C = 0x46; + D_801D9658 += 1; + break; + case 2: + if (D_801D965C == 0) { + if (SsGetMute() == 0) { + D_801D9658 += 1; + } + } else { + D_801D965C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801D9658 += 1; + } + break; + case 4: + D_801D9664 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801D965C = 0xd2; + } else { + D_801D965C = 1; + } + break; + case 5: + D_801D965C -= 1; + if (D_801D965C == -1 || D_801D9668 != 0) { + D_801D965C = 0; + D_801D9658 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801D965C = 0x28; + D_801D9658 += 1; + break; + case 7: + if (D_801D965C == 0) { + if (SsGetMute() == 0) { + D_801D9658 += 1; + } + } else { + D_801D965C -= 1; + } + break; + case 8: + D_801D9660 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +// @class: plumbing +// @stuck: none — MATCH (expected); void-canonical callees called with param via fn-ptr cast (§17a-1) + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801D9658; + +void func_80158BB0(void *arg0) { + if (D_801D9658 == 0) { + D_801D9658 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +// @class: plumbing +// @stuck: none — modeled on byte-matched sibling DEFINE_func_80158C40 (identical skeleton) + +#include "common.h" + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801D9664; +extern s32 D_80188E8C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801D9664; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188E8C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801D9668; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801D9668 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801D9658; +extern s32 D_801D9660; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801D9658 == 4) { + D_801D9658 = 5; + } + if (D_801D9660 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + +// @class: other +// @stuck: none — MATCH (33 ins) +#include "common.h" + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80188EF4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80188EF4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + +INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_801588CC", func_801594E8); + +extern void (*D_80189108[])(void *); + +void func_80159698(void *a0) +{ + D_80189108[*(u8 *)((s32)a0 + 0x15)](a0); +} + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80188F28)); + func_80028620(1, &(*(u8 *)&D_80188F28) + 0x10); + func_80028620(2, &(*(u8 *)&D_80188F28) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + +extern void (*D_801891AC[])(void *); + +void func_80159968(void *a0) +{ + D_801891AC[*(u8 *)((s32)a0 + 0x4D)](a0); +} + +extern void (*D_801891B8[])(void *); + +void func_801599A4(void *a0) +{ + D_801891B8[*(u16 *)a0](a0); +} + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + +extern void (*D_80189300[])(void *); + +void func_80159B70(void *a0) +{ + D_80189300[*(u16 *)((s32)a0 + 0x2)](a0); +} + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018911C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018911C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC01_080/ov_SC01_080_jr_80154C24.c b/src/ov_SC01_080/ov_SC01_080_jr_80154C24.c index 8d489eb44..e7b0c3ea0 100644 --- a/src/ov_SC01_080/ov_SC01_080_jr_80154C24.c +++ b/src/ov_SC01_080/ov_SC01_080_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801858F4[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801C48C8; - -void func_80158BB0(void *arg0) { - if (D_801C48C8 == 0) { - D_801C48C8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801C48D4; -extern s32 D_801858C8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C48D4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801858C8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801C48D8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C48D8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801C48C8; -extern s32 D_801C48D0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801C48C8 == 4) { - D_801C48C8 = 5; - } - if (D_801C48D0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80185930[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80185930; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_80154C24", func_801594E8); - - -extern void (*D_80185B44[])(void); - -void func_80159698(void *a0) { - D_80185B44[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80185964)); - func_80028620(1, &(*(u8 *)&D_80185964) + 0x10); - func_80028620(2, &(*(u8 *)&D_80185964) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80185BE8[])(void); - -void func_80159968(void *a0) { - D_80185BE8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80185D3C[])(void); - -void func_80159B70(void *a0) { - D_80185D3C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80185B58; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80185B58); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC01_080/ov_SC01_080_jr_801588CC.c b/src/ov_SC01_080/ov_SC01_080_jr_801588CC.c new file mode 100644 index 000000000..c48d92e23 --- /dev/null +++ b/src/ov_SC01_080/ov_SC01_080_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80185A90; +extern u8 D_80185A00; +extern u8 D_801859DC; +extern u8 D_801859B8; +extern u8 D_80185A6C; +extern u8 D_80185A48; +extern u8 D_80185A24; +extern u8 D_80185994; +extern void func_80145934(void); +extern u8 D_80185B20; +extern u8 D_80185AFC; +extern u8 D_80185AD8; +extern u8 D_80185AB4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80184F18[]; +extern unsigned char D_80184F48[]; +extern unsigned char D_80184F98[]; +extern unsigned char D_80184FC8[]; +extern unsigned char D_80184FF8[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80185048[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80185110[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80185198[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801851A0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801C4888; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801C488C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801851D0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80185278[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018529C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018528C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801852B0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801852BC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801852CC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801852E4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801852D4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801852F8[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80185314[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80185304; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80185328[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018533C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80185350; +extern void (*D_80185378[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80185358; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80185384[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801853C4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801853C8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801855BC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018582C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018583C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801C48C0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80185864[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80185844; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80185854; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801858A4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801858AC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80185878; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801858B8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80185888; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801C48C8; +extern s32 D_801C48D4; +extern s32 D_801C48D8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801858F4[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801C48C8; +extern int D_801C48D4; +extern int D_801C48D8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801858F8[])(void); + extern int D_801C48CC; + extern int D_801C48D0; + short sVar1; + + D_801858F8[*(unsigned short *)(param_1 + 2)](); + switch (D_801C48C8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C48D0 = 0; + D_801C48CC = 0x46; + D_801C48C8 += 1; + break; + case 2: + if (D_801C48CC == 0) { + if (SsGetMute() == 0) { + D_801C48C8 += 1; + } + } else { + D_801C48CC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C48C8 += 1; + } + break; + case 4: + D_801C48D4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C48CC = 0xd2; + } else { + D_801C48CC = 1; + } + break; + case 5: + D_801C48CC -= 1; + if (D_801C48CC == -1 || D_801C48D8 != 0) { + D_801C48CC = 0; + D_801C48C8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C48CC = 0x28; + D_801C48C8 += 1; + break; + case 7: + if (D_801C48CC == 0) { + if (SsGetMute() == 0) { + D_801C48C8 += 1; + } + } else { + D_801C48CC -= 1; + } + break; + case 8: + D_801C48D0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801C48C8; + +void func_80158BB0(void *arg0) { + if (D_801C48C8 == 0) { + D_801C48C8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801C48D4; +extern s32 D_801858C8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C48D4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801858C8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801C48D8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C48D8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801C48C8; +extern s32 D_801C48D0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801C48C8 == 4) { + D_801C48C8 = 5; + } + if (D_801C48D0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80185930[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80185930; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_801588CC", func_801594E8); + + +extern void (*D_80185B44[])(void); + +void func_80159698(void *a0) { + D_80185B44[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80185964)); + func_80028620(1, &(*(u8 *)&D_80185964) + 0x10); + func_80028620(2, &(*(u8 *)&D_80185964) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80185BE8[])(void); + +void func_80159968(void *a0) { + D_80185BE8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80185D3C[])(void); + +void func_80159B70(void *a0) { + D_80185D3C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80185B58; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80185B58); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC01_084/ov_SC01_084_jr_80154C24.c b/src/ov_SC01_084/ov_SC01_084_jr_80154C24.c index eb6e670c3..5479b7f37 100644 --- a/src/ov_SC01_084/ov_SC01_084_jr_80154C24.c +++ b/src/ov_SC01_084/ov_SC01_084_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80188BE8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801C6370; - -void func_80158BB0(void *arg0) { - if (D_801C6370 == 0) { - D_801C6370 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801C637C; -extern s32 D_80188BBC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C637C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188BBC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801C6380; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C6380 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801C6370; -extern s32 D_801C6378; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801C6370 == 4) { - D_801C6370 = 5; - } - if (D_801C6378 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80188C24[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80188C24; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_80154C24", func_801594E8); - - -extern void (*D_80188E38[])(void); - -void func_80159698(void *a0) { - D_80188E38[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80188C58)); - func_80028620(1, &(*(u8 *)&D_80188C58) + 0x10); - func_80028620(2, &(*(u8 *)&D_80188C58) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80188EDC[])(void); - -void func_80159968(void *a0) { - D_80188EDC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80189030[])(void); - -void func_80159B70(void *a0) { - D_80189030[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80188E4C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188E4C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC01_084/ov_SC01_084_jr_801588CC.c b/src/ov_SC01_084/ov_SC01_084_jr_801588CC.c new file mode 100644 index 000000000..9557d8242 --- /dev/null +++ b/src/ov_SC01_084/ov_SC01_084_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80188D84; +extern u8 D_80188CF4; +extern u8 D_80188CD0; +extern u8 D_80188CAC; +extern u8 D_80188D60; +extern u8 D_80188D3C; +extern u8 D_80188D18; +extern u8 D_80188C88; +extern void func_80145934(void); +extern u8 D_80188E14; +extern u8 D_80188DF0; +extern u8 D_80188DCC; +extern u8 D_80188DA8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018820C[]; +extern unsigned char D_8018823C[]; +extern unsigned char D_8018828C[]; +extern unsigned char D_801882BC[]; +extern unsigned char D_801882EC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018833C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80188404[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018848C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80188494; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801C6330; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801C6334; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801884C4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018856C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80188590[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80188580; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801885A4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801885B0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801885C0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801885D8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801885C8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801885EC[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80188608[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801885F8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018861C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80188630[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80188644; +extern void (*D_8018866C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018864C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80188678[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801886B8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801886BC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801888B0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80188B20[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80188B30[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801C6368; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80188B58[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80188B38; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80188B48; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80188B98[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80188BA0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80188B6C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80188BAC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80188B7C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801C6370; +extern s32 D_801C637C; +extern s32 D_801C6380; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188BE8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801C6370; +extern int D_801C637C; +extern int D_801C6380; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80188BEC[])(void); + extern int D_801C6374; + extern int D_801C6378; + short sVar1; + + D_80188BEC[*(unsigned short *)(param_1 + 2)](); + switch (D_801C6370) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C6378 = 0; + D_801C6374 = 0x46; + D_801C6370 += 1; + break; + case 2: + if (D_801C6374 == 0) { + if (SsGetMute() == 0) { + D_801C6370 += 1; + } + } else { + D_801C6374 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C6370 += 1; + } + break; + case 4: + D_801C637C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C6374 = 0xd2; + } else { + D_801C6374 = 1; + } + break; + case 5: + D_801C6374 -= 1; + if (D_801C6374 == -1 || D_801C6380 != 0) { + D_801C6374 = 0; + D_801C6370 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C6374 = 0x28; + D_801C6370 += 1; + break; + case 7: + if (D_801C6374 == 0) { + if (SsGetMute() == 0) { + D_801C6370 += 1; + } + } else { + D_801C6374 -= 1; + } + break; + case 8: + D_801C6378 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801C6370; + +void func_80158BB0(void *arg0) { + if (D_801C6370 == 0) { + D_801C6370 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801C637C; +extern s32 D_80188BBC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C637C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188BBC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801C6380; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C6380 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801C6370; +extern s32 D_801C6378; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801C6370 == 4) { + D_801C6370 = 5; + } + if (D_801C6378 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80188C24[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80188C24; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_801588CC", func_801594E8); + + +extern void (*D_80188E38[])(void); + +void func_80159698(void *a0) { + D_80188E38[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80188C58)); + func_80028620(1, &(*(u8 *)&D_80188C58) + 0x10); + func_80028620(2, &(*(u8 *)&D_80188C58) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80188EDC[])(void); + +void func_80159968(void *a0) { + D_80188EDC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80189030[])(void); + +void func_80159B70(void *a0) { + D_80189030[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80188E4C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188E4C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_000/ov_SC02_000_jr_80154C24.c b/src/ov_SC02_000/ov_SC02_000_jr_80154C24.c index 9589e4939..929ef0089 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_80154C24.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018CF98[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E6EA0; - -void func_80158BB0(void *arg0) { - if (D_801E6EA0 == 0) { - D_801E6EA0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E6EAC; -extern s32 D_8018CF6C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E6EAC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018CF6C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E6EB0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E6EB0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E6EA0; -extern s32 D_801E6EA8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E6EA0 == 4) { - D_801E6EA0 = 5; - } - if (D_801E6EA8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018CFD4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018CFD4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_80154C24", func_801594E8); - - -extern void (*D_8018D1E8[])(void); - -void func_80159698(void *a0) { - D_8018D1E8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018D008)); - func_80028620(1, &(*(u8 *)&D_8018D008) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018D008) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018D28C[])(void); - -void func_80159968(void *a0) { - D_8018D28C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018D3E0[])(void); - -void func_80159B70(void *a0) { - D_8018D3E0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018D1FC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018D1FC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_000/ov_SC02_000_jr_801588CC.c b/src/ov_SC02_000/ov_SC02_000_jr_801588CC.c new file mode 100644 index 000000000..67a74d6db --- /dev/null +++ b/src/ov_SC02_000/ov_SC02_000_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018D134; +extern u8 D_8018D0A4; +extern u8 D_8018D080; +extern u8 D_8018D05C; +extern u8 D_8018D110; +extern u8 D_8018D0EC; +extern u8 D_8018D0C8; +extern u8 D_8018D038; +extern void func_80145934(void); +extern u8 D_8018D1C4; +extern u8 D_8018D1A0; +extern u8 D_8018D17C; +extern u8 D_8018D158; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018C5BC[]; +extern unsigned char D_8018C5EC[]; +extern unsigned char D_8018C63C[]; +extern unsigned char D_8018C66C[]; +extern unsigned char D_8018C69C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018C6EC[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018C7B4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018C83C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018C844; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E6E60; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E6E64; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018C874; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018C91C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018C940[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018C930; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018C954[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018C960[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018C970[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018C988[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018C978; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018C99C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018C9B8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018C9A8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018C9CC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018C9E0[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018C9F4; +extern void (*D_8018CA1C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018C9FC; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018CA28[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018CA68[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018CA6C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018CC60[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018CED0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018CEE0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E6E98; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018CF08[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018CEE8; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018CEF8; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018CF48[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018CF50[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018CF1C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018CF5C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018CF2C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E6EA0; +extern s32 D_801E6EAC; +extern s32 D_801E6EB0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018CF98[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801E6EA0; +extern int D_801E6EAC; +extern int D_801E6EB0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018CF9C[])(void); + extern int D_801E6EA4; + extern int D_801E6EA8; + short sVar1; + + D_8018CF9C[*(unsigned short *)(param_1 + 2)](); + switch (D_801E6EA0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801E6EA8 = 0; + D_801E6EA4 = 0x46; + D_801E6EA0 += 1; + break; + case 2: + if (D_801E6EA4 == 0) { + if (SsGetMute() == 0) { + D_801E6EA0 += 1; + } + } else { + D_801E6EA4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801E6EA0 += 1; + } + break; + case 4: + D_801E6EAC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801E6EA4 = 0xd2; + } else { + D_801E6EA4 = 1; + } + break; + case 5: + D_801E6EA4 -= 1; + if (D_801E6EA4 == -1 || D_801E6EB0 != 0) { + D_801E6EA4 = 0; + D_801E6EA0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801E6EA4 = 0x28; + D_801E6EA0 += 1; + break; + case 7: + if (D_801E6EA4 == 0) { + if (SsGetMute() == 0) { + D_801E6EA0 += 1; + } + } else { + D_801E6EA4 -= 1; + } + break; + case 8: + D_801E6EA8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801E6EA0; + +void func_80158BB0(void *arg0) { + if (D_801E6EA0 == 0) { + D_801E6EA0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801E6EAC; +extern s32 D_8018CF6C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801E6EAC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018CF6C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801E6EB0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801E6EB0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801E6EA0; +extern s32 D_801E6EA8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801E6EA0 == 4) { + D_801E6EA0 = 5; + } + if (D_801E6EA8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018CFD4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018CFD4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_801588CC", func_801594E8); + + +extern void (*D_8018D1E8[])(void); + +void func_80159698(void *a0) { + D_8018D1E8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018D008)); + func_80028620(1, &(*(u8 *)&D_8018D008) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018D008) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018D28C[])(void); + +void func_80159968(void *a0) { + D_8018D28C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018D3E0[])(void); + +void func_80159B70(void *a0) { + D_8018D3E0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018D1FC; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018D1FC); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80154C24.c b/src/ov_SC02_003/ov_SC02_003_jr_80154C24.c index 6a0af2852..89d3fd2ba 100644 --- a/src/ov_SC02_003/ov_SC02_003_jr_80154C24.c +++ b/src/ov_SC02_003/ov_SC02_003_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018CF98[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E6EA0; - -void func_80158BB0(void *arg0) { - if (D_801E6EA0 == 0) { - D_801E6EA0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E6EAC; -extern s32 D_8018CF6C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E6EAC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018CF6C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E6EB0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E6EB0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E6EA0; -extern s32 D_801E6EA8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E6EA0 == 4) { - D_801E6EA0 = 5; - } - if (D_801E6EA8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018CFD4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018CFD4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_80154C24", func_801594E8); - - -extern void (*D_8018D1E8[])(void); - -void func_80159698(void *a0) { - D_8018D1E8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018D008)); - func_80028620(1, &(*(u8 *)&D_8018D008) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018D008) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018D28C[])(void); - -void func_80159968(void *a0) { - D_8018D28C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018D3E0[])(void); - -void func_80159B70(void *a0) { - D_8018D3E0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018D1FC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018D1FC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_801588CC.c b/src/ov_SC02_003/ov_SC02_003_jr_801588CC.c new file mode 100644 index 000000000..ad5696274 --- /dev/null +++ b/src/ov_SC02_003/ov_SC02_003_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018D134; +extern u8 D_8018D0A4; +extern u8 D_8018D080; +extern u8 D_8018D05C; +extern u8 D_8018D110; +extern u8 D_8018D0EC; +extern u8 D_8018D0C8; +extern u8 D_8018D038; +extern void func_80145934(void); +extern u8 D_8018D1C4; +extern u8 D_8018D1A0; +extern u8 D_8018D17C; +extern u8 D_8018D158; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018C5BC[]; +extern unsigned char D_8018C5EC[]; +extern unsigned char D_8018C63C[]; +extern unsigned char D_8018C66C[]; +extern unsigned char D_8018C69C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018C6EC[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018C7B4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018C83C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018C844; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E6E60; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E6E64; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018C874; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018C91C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018C940[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018C930; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018C954[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018C960[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018C970[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018C988[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018C978; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018C99C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018C9B8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018C9A8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018C9CC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018C9E0[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018C9F4; +extern void (*D_8018CA1C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018C9FC; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018CA28[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018CA68[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018CA6C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018CC60[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018CED0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018CEE0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E6E98; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018CF08[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018CEE8; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018CEF8; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018CF48[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018CF50[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018CF1C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018CF5C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018CF2C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E6EA0; +extern s32 D_801E6EAC; +extern s32 D_801E6EB0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018CF98[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801E6EA0; +extern int D_801E6EAC; +extern int D_801E6EB0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018CF9C[])(void); + extern int D_801E6EA4; + extern int D_801E6EA8; + short sVar1; + + D_8018CF9C[*(unsigned short *)(param_1 + 2)](); + switch (D_801E6EA0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801E6EA8 = 0; + D_801E6EA4 = 0x46; + D_801E6EA0 += 1; + break; + case 2: + if (D_801E6EA4 == 0) { + if (SsGetMute() == 0) { + D_801E6EA0 += 1; + } + } else { + D_801E6EA4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801E6EA0 += 1; + } + break; + case 4: + D_801E6EAC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801E6EA4 = 0xd2; + } else { + D_801E6EA4 = 1; + } + break; + case 5: + D_801E6EA4 -= 1; + if (D_801E6EA4 == -1 || D_801E6EB0 != 0) { + D_801E6EA4 = 0; + D_801E6EA0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801E6EA4 = 0x28; + D_801E6EA0 += 1; + break; + case 7: + if (D_801E6EA4 == 0) { + if (SsGetMute() == 0) { + D_801E6EA0 += 1; + } + } else { + D_801E6EA4 -= 1; + } + break; + case 8: + D_801E6EA8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801E6EA0; + +void func_80158BB0(void *arg0) { + if (D_801E6EA0 == 0) { + D_801E6EA0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801E6EAC; +extern s32 D_8018CF6C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801E6EAC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018CF6C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801E6EB0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801E6EB0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801E6EA0; +extern s32 D_801E6EA8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801E6EA0 == 4) { + D_801E6EA0 = 5; + } + if (D_801E6EA8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018CFD4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018CFD4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_801588CC", func_801594E8); + + +extern void (*D_8018D1E8[])(void); + +void func_80159698(void *a0) { + D_8018D1E8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018D008)); + func_80028620(1, &(*(u8 *)&D_8018D008) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018D008) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018D28C[])(void); + +void func_80159968(void *a0) { + D_8018D28C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018D3E0[])(void); + +void func_80159B70(void *a0) { + D_8018D3E0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018D1FC; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018D1FC); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_004/ov_SC02_004_jr_80154C24.c b/src/ov_SC02_004/ov_SC02_004_jr_80154C24.c index 1a58d9270..3312d4002 100644 --- a/src/ov_SC02_004/ov_SC02_004_jr_80154C24.c +++ b/src/ov_SC02_004/ov_SC02_004_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180078[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801950F0; - -void func_80158BB0(void *arg0) { - if (D_801950F0 == 0) { - D_801950F0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801950FC; -extern s32 D_8018004C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801950FC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018004C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80195100; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80195100 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801950F0; -extern s32 D_801950F8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801950F0 == 4) { - D_801950F0 = 5; - } - if (D_801950F8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801800B4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801800B4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_80154C24", func_801594E8); - - -extern void (*D_801802C8[])(void); - -void func_80159698(void *a0) { - D_801802C8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801800E8)); - func_80028620(1, &(*(u8 *)&D_801800E8) + 0x10); - func_80028620(2, &(*(u8 *)&D_801800E8) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018036C[])(void); - -void func_80159968(void *a0) { - D_8018036C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801804C0[])(void); - -void func_80159B70(void *a0) { - D_801804C0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801802DC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801802DC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_004/ov_SC02_004_jr_801588CC.c b/src/ov_SC02_004/ov_SC02_004_jr_801588CC.c new file mode 100644 index 000000000..3e6f81f7a --- /dev/null +++ b/src/ov_SC02_004/ov_SC02_004_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80180214; +extern u8 D_80180184; +extern u8 D_80180160; +extern u8 D_8018013C; +extern u8 D_801801F0; +extern u8 D_801801CC; +extern u8 D_801801A8; +extern u8 D_80180118; +extern void func_80145934(void); +extern u8 D_801802A4; +extern u8 D_80180280; +extern u8 D_8018025C; +extern u8 D_80180238; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8017F69C[]; +extern unsigned char D_8017F6CC[]; +extern unsigned char D_8017F71C[]; +extern unsigned char D_8017F74C[]; +extern unsigned char D_8017F77C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8017F7CC[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8017F894[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8017F91C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8017F924; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801950B0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801950B4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8017F954; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8017F9FC[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8017FA20[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8017FA10; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8017FA34[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8017FA40[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8017FA50[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8017FA68[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FA58; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8017FA7C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8017FA98[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FA88; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8017FAAC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8017FAC0[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8017FAD4; +extern void (*D_8017FAFC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017FADC; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8017FB08[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8017FB48[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8017FB4C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8017FD40[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8017FFB0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8017FFC0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801950E8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8017FFE8[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8017FFC8; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8017FFD8; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180028[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80180030[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8017FFFC; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018003C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018000C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801950F0; +extern s32 D_801950FC; +extern s32 D_80195100; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180078[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801950F0; +extern int D_801950FC; +extern int D_80195100; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018007C[])(void); + extern int D_801950F4; + extern int D_801950F8; + short sVar1; + + D_8018007C[*(unsigned short *)(param_1 + 2)](); + switch (D_801950F0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801950F8 = 0; + D_801950F4 = 0x46; + D_801950F0 += 1; + break; + case 2: + if (D_801950F4 == 0) { + if (SsGetMute() == 0) { + D_801950F0 += 1; + } + } else { + D_801950F4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801950F0 += 1; + } + break; + case 4: + D_801950FC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801950F4 = 0xd2; + } else { + D_801950F4 = 1; + } + break; + case 5: + D_801950F4 -= 1; + if (D_801950F4 == -1 || D_80195100 != 0) { + D_801950F4 = 0; + D_801950F0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801950F4 = 0x28; + D_801950F0 += 1; + break; + case 7: + if (D_801950F4 == 0) { + if (SsGetMute() == 0) { + D_801950F0 += 1; + } + } else { + D_801950F4 -= 1; + } + break; + case 8: + D_801950F8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801950F0; + +void func_80158BB0(void *arg0) { + if (D_801950F0 == 0) { + D_801950F0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801950FC; +extern s32 D_8018004C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801950FC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018004C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80195100; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80195100 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801950F0; +extern s32 D_801950F8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801950F0 == 4) { + D_801950F0 = 5; + } + if (D_801950F8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801800B4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801800B4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_801588CC", func_801594E8); + + +extern void (*D_801802C8[])(void); + +void func_80159698(void *a0) { + D_801802C8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801800E8)); + func_80028620(1, &(*(u8 *)&D_801800E8) + 0x10); + func_80028620(2, &(*(u8 *)&D_801800E8) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018036C[])(void); + +void func_80159968(void *a0) { + D_8018036C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801804C0[])(void); + +void func_80159B70(void *a0) { + D_801804C0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801802DC; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801802DC); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_005/ov_SC02_005_jr_80154C24.c b/src/ov_SC02_005/ov_SC02_005_jr_80154C24.c index bcefd2aa8..173d7aa46 100644 --- a/src/ov_SC02_005/ov_SC02_005_jr_80154C24.c +++ b/src/ov_SC02_005/ov_SC02_005_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80192C7C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E3168; - -void func_80158BB0(void *arg0) { - if (D_801E3168 == 0) { - D_801E3168 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E3174; -extern s32 D_80192C50[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E3174; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80192C50[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E3178; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E3178 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E3168; -extern s32 D_801E3170; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E3168 == 4) { - D_801E3168 = 5; - } - if (D_801E3170 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80192CB8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80192CB8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80154C24", func_801594E8); - - -extern void (*D_80192ECC[])(void); - -void func_80159698(void *a0) { - D_80192ECC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80192CEC)); - func_80028620(1, &(*(u8 *)&D_80192CEC) + 0x10); - func_80028620(2, &(*(u8 *)&D_80192CEC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80192F70[])(void); - -void func_80159968(void *a0) { - D_80192F70[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801930C4[])(void); - -void func_80159B70(void *a0) { - D_801930C4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80192EE0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80192EE0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_005/ov_SC02_005_jr_801588CC.c b/src/ov_SC02_005/ov_SC02_005_jr_801588CC.c new file mode 100644 index 000000000..4ca0433e8 --- /dev/null +++ b/src/ov_SC02_005/ov_SC02_005_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80192E18; +extern u8 D_80192D88; +extern u8 D_80192D64; +extern u8 D_80192D40; +extern u8 D_80192DF4; +extern u8 D_80192DD0; +extern u8 D_80192DAC; +extern u8 D_80192D1C; +extern void func_80145934(void); +extern u8 D_80192EA8; +extern u8 D_80192E84; +extern u8 D_80192E60; +extern u8 D_80192E3C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801922A0[]; +extern unsigned char D_801922D0[]; +extern unsigned char D_80192320[]; +extern unsigned char D_80192350[]; +extern unsigned char D_80192380[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801923D0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80192498[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80192520[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80192528; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E3128; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E312C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80192558; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80192600[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80192624[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80192614; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80192638[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80192644[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80192654[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8019266C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8019265C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80192680[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8019269C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8019268C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801926B0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801926C4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801926D8; +extern void (*D_80192700[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801926E0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8019270C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8019274C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80192750[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80192944[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80192BB4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80192BC4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E3160; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80192BEC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80192BCC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80192BDC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80192C2C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80192C34[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80192C00; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80192C40[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80192C10; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E3168; +extern s32 D_801E3174; +extern s32 D_801E3178; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80192C7C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801E3168; +extern int D_801E3174; +extern int D_801E3178; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80192C80[])(void); + extern int D_801E316C; + extern int D_801E3170; + short sVar1; + + D_80192C80[*(unsigned short *)(param_1 + 2)](); + switch (D_801E3168) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801E3170 = 0; + D_801E316C = 0x46; + D_801E3168 += 1; + break; + case 2: + if (D_801E316C == 0) { + if (SsGetMute() == 0) { + D_801E3168 += 1; + } + } else { + D_801E316C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801E3168 += 1; + } + break; + case 4: + D_801E3174 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801E316C = 0xd2; + } else { + D_801E316C = 1; + } + break; + case 5: + D_801E316C -= 1; + if (D_801E316C == -1 || D_801E3178 != 0) { + D_801E316C = 0; + D_801E3168 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801E316C = 0x28; + D_801E3168 += 1; + break; + case 7: + if (D_801E316C == 0) { + if (SsGetMute() == 0) { + D_801E3168 += 1; + } + } else { + D_801E316C -= 1; + } + break; + case 8: + D_801E3170 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801E3168; + +void func_80158BB0(void *arg0) { + if (D_801E3168 == 0) { + D_801E3168 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801E3174; +extern s32 D_80192C50[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801E3174; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80192C50[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801E3178; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801E3178 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801E3168; +extern s32 D_801E3170; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801E3168 == 4) { + D_801E3168 = 5; + } + if (D_801E3170 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80192CB8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80192CB8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_801588CC", func_801594E8); + + +extern void (*D_80192ECC[])(void); + +void func_80159698(void *a0) { + D_80192ECC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80192CEC)); + func_80028620(1, &(*(u8 *)&D_80192CEC) + 0x10); + func_80028620(2, &(*(u8 *)&D_80192CEC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80192F70[])(void); + +void func_80159968(void *a0) { + D_80192F70[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801930C4[])(void); + +void func_80159B70(void *a0) { + D_801930C4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80192EE0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80192EE0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_011/ov_SC02_011_jr_80154C24.c b/src/ov_SC02_011/ov_SC02_011_jr_80154C24.c index 3de2c1ab8..9ff9bd5a4 100644 --- a/src/ov_SC02_011/ov_SC02_011_jr_80154C24.c +++ b/src/ov_SC02_011/ov_SC02_011_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801930CC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801EA048; - -void func_80158BB0(void *arg0) { - if (D_801EA048 == 0) { - D_801EA048 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801EA054; -extern s32 D_801930A0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801EA054; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801930A0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801EA058; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801EA058 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801EA048; -extern s32 D_801EA050; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801EA048 == 4) { - D_801EA048 = 5; - } - if (D_801EA050 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80193108[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80193108; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_80154C24", func_801594E8); - - -extern void (*D_8019331C[])(void); - -void func_80159698(void *a0) { - D_8019331C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8019313C)); - func_80028620(1, &(*(u8 *)&D_8019313C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8019313C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801933C0[])(void); - -void func_80159968(void *a0) { - D_801933C0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80193514[])(void); - -void func_80159B70(void *a0) { - D_80193514[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80193330; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80193330); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_011/ov_SC02_011_jr_801588CC.c b/src/ov_SC02_011/ov_SC02_011_jr_801588CC.c new file mode 100644 index 000000000..0ba6ee8b9 --- /dev/null +++ b/src/ov_SC02_011/ov_SC02_011_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80193268; +extern u8 D_801931D8; +extern u8 D_801931B4; +extern u8 D_80193190; +extern u8 D_80193244; +extern u8 D_80193220; +extern u8 D_801931FC; +extern u8 D_8019316C; +extern void func_80145934(void); +extern u8 D_801932F8; +extern u8 D_801932D4; +extern u8 D_801932B0; +extern u8 D_8019328C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801926F0[]; +extern unsigned char D_80192720[]; +extern unsigned char D_80192770[]; +extern unsigned char D_801927A0[]; +extern unsigned char D_801927D0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80192820[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801928E8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80192970[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80192978; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801EA008; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801EA00C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801929A8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80192A50[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80192A74[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80192A64; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80192A88[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80192A94[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80192AA4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80192ABC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80192AAC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80192AD0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80192AEC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80192ADC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80192B00[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80192B14[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80192B28; +extern void (*D_80192B50[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80192B30; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80192B5C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80192B9C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80192BA0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80192D94[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80193004[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80193014[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801EA040; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8019303C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8019301C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8019302C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8019307C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80193084[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80193050; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80193090[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80193060; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801EA048; +extern s32 D_801EA054; +extern s32 D_801EA058; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801930CC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801EA048; +extern int D_801EA054; +extern int D_801EA058; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801930D0[])(void); + extern int D_801EA04C; + extern int D_801EA050; + short sVar1; + + D_801930D0[*(unsigned short *)(param_1 + 2)](); + switch (D_801EA048) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801EA050 = 0; + D_801EA04C = 0x46; + D_801EA048 += 1; + break; + case 2: + if (D_801EA04C == 0) { + if (SsGetMute() == 0) { + D_801EA048 += 1; + } + } else { + D_801EA04C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801EA048 += 1; + } + break; + case 4: + D_801EA054 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801EA04C = 0xd2; + } else { + D_801EA04C = 1; + } + break; + case 5: + D_801EA04C -= 1; + if (D_801EA04C == -1 || D_801EA058 != 0) { + D_801EA04C = 0; + D_801EA048 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801EA04C = 0x28; + D_801EA048 += 1; + break; + case 7: + if (D_801EA04C == 0) { + if (SsGetMute() == 0) { + D_801EA048 += 1; + } + } else { + D_801EA04C -= 1; + } + break; + case 8: + D_801EA050 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801EA048; + +void func_80158BB0(void *arg0) { + if (D_801EA048 == 0) { + D_801EA048 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801EA054; +extern s32 D_801930A0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801EA054; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801930A0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801EA058; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801EA058 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801EA048; +extern s32 D_801EA050; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801EA048 == 4) { + D_801EA048 = 5; + } + if (D_801EA050 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80193108[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80193108; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_801588CC", func_801594E8); + + +extern void (*D_8019331C[])(void); + +void func_80159698(void *a0) { + D_8019331C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8019313C)); + func_80028620(1, &(*(u8 *)&D_8019313C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8019313C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801933C0[])(void); + +void func_80159968(void *a0) { + D_801933C0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80193514[])(void); + +void func_80159B70(void *a0) { + D_80193514[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80193330; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80193330); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_015/ov_SC02_015_jr_80154C24.c b/src/ov_SC02_015/ov_SC02_015_jr_80154C24.c index 3d316a882..32cfbf4f0 100644 --- a/src/ov_SC02_015/ov_SC02_015_jr_80154C24.c +++ b/src/ov_SC02_015/ov_SC02_015_jr_80154C24.c @@ -1680,342 +1680,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801805E0[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8018F1C8; - -void func_80158BB0(void *arg0) { - if (D_8018F1C8 == 0) { - D_8018F1C8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8018F1D4; -extern s32 D_801805B4[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8018F1D4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801805B4[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8018F1D8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8018F1D8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8018F1C8; -extern s32 D_8018F1D0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8018F1C8 == 4) { - D_8018F1C8 = 5; - } - if (D_8018F1D0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018061C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018061C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_80154C24", func_801594E8); - - -extern void (*D_80180830[])(void); - -void func_80159698(void *a0) { - D_80180830[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180650)); - func_80028620(1, &(*(u8 *)&D_80180650) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180650) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801808D4[])(void); - -void func_80159968(void *a0) { - D_801808D4[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80180A28[])(void); - -void func_80159B70(void *a0) { - D_80180A28[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80180844; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80180844); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_015/ov_SC02_015_jr_801588CC.c b/src/ov_SC02_015/ov_SC02_015_jr_801588CC.c new file mode 100644 index 000000000..dc7f147c9 --- /dev/null +++ b/src/ov_SC02_015/ov_SC02_015_jr_801588CC.c @@ -0,0 +1,1534 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018077C; +extern u8 D_801806EC; +extern u8 D_801806C8; +extern u8 D_801806A4; +extern u8 D_80180758; +extern u8 D_80180734; +extern u8 D_80180710; +extern u8 D_80180680; +extern void func_80145934(void); +extern u8 D_8018080C; +extern u8 D_801807E8; +extern u8 D_801807C4; +extern u8 D_801807A0; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8017FC04[]; +extern unsigned char D_8017FC34[]; +extern unsigned char D_8017FC84[]; +extern unsigned char D_8017FCB4[]; +extern unsigned char D_8017FCE4[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8017FD34[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8017FDFC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8017FE84[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8017FE8C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8018F188; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8018F18C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8017FEBC; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8017FF64[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8017FF88[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8017FF78; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8017FF9C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8017FFA8[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8017FFB8[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8017FFD0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FFC0; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8017FFE4[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FFF0; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80180014[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80180028[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018003C; +extern void (*D_80180064[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180044; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80180070[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801800B0[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801800B4[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801802A8[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80180518[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80180528[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8018F1C0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180550[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180530; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180540; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180590[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80180598[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180564; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801805A4[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180574; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8018F1C8; +extern s32 D_8018F1D4; +extern s32 D_8018F1D8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801805E0[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8018F1C8; +extern int D_8018F1D4; +extern int D_8018F1D8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801805E4[])(void); + extern int D_8018F1CC; + extern int D_8018F1D0; + short sVar1; + + D_801805E4[*(unsigned short *)(param_1 + 2)](); + switch (D_8018F1C8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8018F1D0 = 0; + D_8018F1CC = 0x46; + D_8018F1C8 += 1; + break; + case 2: + if (D_8018F1CC == 0) { + if (SsGetMute() == 0) { + D_8018F1C8 += 1; + } + } else { + D_8018F1CC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8018F1C8 += 1; + } + break; + case 4: + D_8018F1D4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8018F1CC = 0xd2; + } else { + D_8018F1CC = 1; + } + break; + case 5: + D_8018F1CC -= 1; + if (D_8018F1CC == -1 || D_8018F1D8 != 0) { + D_8018F1CC = 0; + D_8018F1C8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8018F1CC = 0x28; + D_8018F1C8 += 1; + break; + case 7: + if (D_8018F1CC == 0) { + if (SsGetMute() == 0) { + D_8018F1C8 += 1; + } + } else { + D_8018F1CC -= 1; + } + break; + case 8: + D_8018F1D0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8018F1C8; + +void func_80158BB0(void *arg0) { + if (D_8018F1C8 == 0) { + D_8018F1C8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8018F1D4; +extern s32 D_801805B4[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8018F1D4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801805B4[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8018F1D8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8018F1D8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8018F1C8; +extern s32 D_8018F1D0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8018F1C8 == 4) { + D_8018F1C8 = 5; + } + if (D_8018F1D0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018061C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018061C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_801588CC", func_801594E8); + + +extern void (*D_80180830[])(void); + +void func_80159698(void *a0) { + D_80180830[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180650)); + func_80028620(1, &(*(u8 *)&D_80180650) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180650) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801808D4[])(void); + +void func_80159968(void *a0) { + D_801808D4[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80180A28[])(void); + +void func_80159B70(void *a0) { + D_80180A28[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80180844; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80180844); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_016/ov_SC02_016_jr_80154C24.c b/src/ov_SC02_016/ov_SC02_016_jr_80154C24.c index 7793790ad..a18e10daa 100644 --- a/src/ov_SC02_016/ov_SC02_016_jr_80154C24.c +++ b/src/ov_SC02_016/ov_SC02_016_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80186818[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B2DE0; - -void func_80158BB0(void *arg0) { - if (D_801B2DE0 == 0) { - D_801B2DE0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B2DEC; -extern s32 D_801867EC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B2DEC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801867EC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B2DF0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B2DF0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B2DE0; -extern s32 D_801B2DE8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B2DE0 == 4) { - D_801B2DE0 = 5; - } - if (D_801B2DE8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80186854[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80186854; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_80154C24", func_801594E8); - - -extern void (*D_80186A68[])(void); - -void func_80159698(void *a0) { - D_80186A68[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80186888)); - func_80028620(1, &(*(u8 *)&D_80186888) + 0x10); - func_80028620(2, &(*(u8 *)&D_80186888) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80186B0C[])(void); - -void func_80159968(void *a0) { - D_80186B0C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80186C60[])(void); - -void func_80159B70(void *a0) { - D_80186C60[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80186A7C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186A7C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_016/ov_SC02_016_jr_801588CC.c b/src/ov_SC02_016/ov_SC02_016_jr_801588CC.c new file mode 100644 index 000000000..b7f45305b --- /dev/null +++ b/src/ov_SC02_016/ov_SC02_016_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801869B4; +extern u8 D_80186924; +extern u8 D_80186900; +extern u8 D_801868DC; +extern u8 D_80186990; +extern u8 D_8018696C; +extern u8 D_80186948; +extern u8 D_801868B8; +extern void func_80145934(void); +extern u8 D_80186A44; +extern u8 D_80186A20; +extern u8 D_801869FC; +extern u8 D_801869D8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80185E3C[]; +extern unsigned char D_80185E6C[]; +extern unsigned char D_80185EBC[]; +extern unsigned char D_80185EEC[]; +extern unsigned char D_80185F1C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80185F6C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80186034[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801860BC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801860C4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B2DA0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B2DA4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801860F4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018619C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801861C0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801861B0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801861D4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801861E0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801861F0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80186208[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801861F8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018621C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80186238[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186228; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018624C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80186260[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80186274; +extern void (*D_8018629C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018627C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801862A8[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801862E8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801862EC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801864E0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80186750[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80186760[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B2DD8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186788[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80186768; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80186778; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801867C8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801867D0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018679C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801867DC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801867AC; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B2DE0; +extern s32 D_801B2DEC; +extern s32 D_801B2DF0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80186818[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B2DE0; +extern int D_801B2DEC; +extern int D_801B2DF0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018681C[])(void); + extern int D_801B2DE4; + extern int D_801B2DE8; + short sVar1; + + D_8018681C[*(unsigned short *)(param_1 + 2)](); + switch (D_801B2DE0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B2DE8 = 0; + D_801B2DE4 = 0x46; + D_801B2DE0 += 1; + break; + case 2: + if (D_801B2DE4 == 0) { + if (SsGetMute() == 0) { + D_801B2DE0 += 1; + } + } else { + D_801B2DE4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B2DE0 += 1; + } + break; + case 4: + D_801B2DEC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B2DE4 = 0xd2; + } else { + D_801B2DE4 = 1; + } + break; + case 5: + D_801B2DE4 -= 1; + if (D_801B2DE4 == -1 || D_801B2DF0 != 0) { + D_801B2DE4 = 0; + D_801B2DE0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B2DE4 = 0x28; + D_801B2DE0 += 1; + break; + case 7: + if (D_801B2DE4 == 0) { + if (SsGetMute() == 0) { + D_801B2DE0 += 1; + } + } else { + D_801B2DE4 -= 1; + } + break; + case 8: + D_801B2DE8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B2DE0; + +void func_80158BB0(void *arg0) { + if (D_801B2DE0 == 0) { + D_801B2DE0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B2DEC; +extern s32 D_801867EC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B2DEC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801867EC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B2DF0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B2DF0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B2DE0; +extern s32 D_801B2DE8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B2DE0 == 4) { + D_801B2DE0 = 5; + } + if (D_801B2DE8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80186854[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80186854; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_801588CC", func_801594E8); + + +extern void (*D_80186A68[])(void); + +void func_80159698(void *a0) { + D_80186A68[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80186888)); + func_80028620(1, &(*(u8 *)&D_80186888) + 0x10); + func_80028620(2, &(*(u8 *)&D_80186888) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80186B0C[])(void); + +void func_80159968(void *a0) { + D_80186B0C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80186C60[])(void); + +void func_80159B70(void *a0) { + D_80186C60[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80186A7C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186A7C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_017/ov_SC02_017_jr_80154C24.c b/src/ov_SC02_017/ov_SC02_017_jr_80154C24.c index 3a00be23a..6ca0c9ca6 100644 --- a/src/ov_SC02_017/ov_SC02_017_jr_80154C24.c +++ b/src/ov_SC02_017/ov_SC02_017_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018C870[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801EE608; - -void func_80158BB0(void *arg0) { - if (D_801EE608 == 0) { - D_801EE608 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801EE614; -extern s32 D_8018C844[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801EE614; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018C844[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801EE618; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801EE618 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801EE608; -extern s32 D_801EE610; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801EE608 == 4) { - D_801EE608 = 5; - } - if (D_801EE610 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018C8AC[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018C8AC; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_80154C24", func_801594E8); - - -extern void (*D_8018CAC0[])(void); - -void func_80159698(void *a0) { - D_8018CAC0[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018C8E0)); - func_80028620(1, &(*(u8 *)&D_8018C8E0) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018C8E0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018CB64[])(void); - -void func_80159968(void *a0) { - D_8018CB64[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018CCB8[])(void); - -void func_80159B70(void *a0) { - D_8018CCB8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018CAD4; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018CAD4); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_017/ov_SC02_017_jr_801588CC.c b/src/ov_SC02_017/ov_SC02_017_jr_801588CC.c new file mode 100644 index 000000000..8684a4144 --- /dev/null +++ b/src/ov_SC02_017/ov_SC02_017_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018CA0C; +extern u8 D_8018C97C; +extern u8 D_8018C958; +extern u8 D_8018C934; +extern u8 D_8018C9E8; +extern u8 D_8018C9C4; +extern u8 D_8018C9A0; +extern u8 D_8018C910; +extern void func_80145934(void); +extern u8 D_8018CA9C; +extern u8 D_8018CA78; +extern u8 D_8018CA54; +extern u8 D_8018CA30; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018BE94[]; +extern unsigned char D_8018BEC4[]; +extern unsigned char D_8018BF14[]; +extern unsigned char D_8018BF44[]; +extern unsigned char D_8018BF74[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018BFC4[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018C08C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018C114[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018C11C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801EE5C8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801EE5CC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018C14C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018C1F4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018C218[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018C208; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018C22C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018C238[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018C248[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018C260[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018C250; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018C274[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018C290[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018C280; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018C2A4[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018C2B8[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018C2CC; +extern void (*D_8018C2F4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018C2D4; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018C300[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018C340[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018C344[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018C538[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018C7A8[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018C7B8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801EE600; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018C7E0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018C7C0; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018C7D0; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018C820[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018C828[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018C7F4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018C834[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018C804; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801EE608; +extern s32 D_801EE614; +extern s32 D_801EE618; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018C870[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801EE608; +extern int D_801EE614; +extern int D_801EE618; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018C874[])(void); + extern int D_801EE60C; + extern int D_801EE610; + short sVar1; + + D_8018C874[*(unsigned short *)(param_1 + 2)](); + switch (D_801EE608) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801EE610 = 0; + D_801EE60C = 0x46; + D_801EE608 += 1; + break; + case 2: + if (D_801EE60C == 0) { + if (SsGetMute() == 0) { + D_801EE608 += 1; + } + } else { + D_801EE60C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801EE608 += 1; + } + break; + case 4: + D_801EE614 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801EE60C = 0xd2; + } else { + D_801EE60C = 1; + } + break; + case 5: + D_801EE60C -= 1; + if (D_801EE60C == -1 || D_801EE618 != 0) { + D_801EE60C = 0; + D_801EE608 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801EE60C = 0x28; + D_801EE608 += 1; + break; + case 7: + if (D_801EE60C == 0) { + if (SsGetMute() == 0) { + D_801EE608 += 1; + } + } else { + D_801EE60C -= 1; + } + break; + case 8: + D_801EE610 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801EE608; + +void func_80158BB0(void *arg0) { + if (D_801EE608 == 0) { + D_801EE608 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801EE614; +extern s32 D_8018C844[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801EE614; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018C844[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801EE618; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801EE618 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801EE608; +extern s32 D_801EE610; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801EE608 == 4) { + D_801EE608 = 5; + } + if (D_801EE610 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018C8AC[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018C8AC; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_801588CC", func_801594E8); + + +extern void (*D_8018CAC0[])(void); + +void func_80159698(void *a0) { + D_8018CAC0[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018C8E0)); + func_80028620(1, &(*(u8 *)&D_8018C8E0) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018C8E0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018CB64[])(void); + +void func_80159968(void *a0) { + D_8018CB64[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018CCB8[])(void); + +void func_80159B70(void *a0) { + D_8018CCB8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018CAD4; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018CAD4); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_021/ov_SC02_021_jr_80154C24.c b/src/ov_SC02_021/ov_SC02_021_jr_80154C24.c index fcc36800c..422621001 100644 --- a/src/ov_SC02_021/ov_SC02_021_jr_80154C24.c +++ b/src/ov_SC02_021/ov_SC02_021_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80181E64[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_80191B78; - -void func_80158BB0(void *arg0) { - if (D_80191B78 == 0) { - D_80191B78 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_80191B84; -extern s32 D_80181E38[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_80191B84; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80181E38[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80191B88; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80191B88 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_80191B78; -extern s32 D_80191B80; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_80191B78 == 4) { - D_80191B78 = 5; - } - if (D_80191B80 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80181EA0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80181EA0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_80154C24", func_801594E8); - - -extern void (*D_801820B4[])(void); - -void func_80159698(void *a0) { - D_801820B4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80181ED4)); - func_80028620(1, &(*(u8 *)&D_80181ED4) + 0x10); - func_80028620(2, &(*(u8 *)&D_80181ED4) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80182158[])(void); - -void func_80159968(void *a0) { - D_80182158[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801822AC[])(void); - -void func_80159B70(void *a0) { - D_801822AC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801820C8; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801820C8); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_021/ov_SC02_021_jr_801588CC.c b/src/ov_SC02_021/ov_SC02_021_jr_801588CC.c new file mode 100644 index 000000000..d34a8a1ba --- /dev/null +++ b/src/ov_SC02_021/ov_SC02_021_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80182000; +extern u8 D_80181F70; +extern u8 D_80181F4C; +extern u8 D_80181F28; +extern u8 D_80181FDC; +extern u8 D_80181FB8; +extern u8 D_80181F94; +extern u8 D_80181F04; +extern void func_80145934(void); +extern u8 D_80182090; +extern u8 D_8018206C; +extern u8 D_80182048; +extern u8 D_80182024; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80181488[]; +extern unsigned char D_801814B8[]; +extern unsigned char D_80181508[]; +extern unsigned char D_80181538[]; +extern unsigned char D_80181568[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801815B8[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80181680[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80181708[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80181710; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_80191B38; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_80191B3C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80181740; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801817E8[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018180C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801817FC; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80181820[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018182C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018183C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80181854[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181844; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80181868[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80181884[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181874; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80181898[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801818AC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801818C0; +extern void (*D_801818E8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801818C8; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801818F4[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80181934[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80181938[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80181B2C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80181D9C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80181DAC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_80191B70; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181DD4[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80181DB4; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80181DC4; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80181E14[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80181E1C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181DE8; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80181E28[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80181DF8; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_80191B78; +extern s32 D_80191B84; +extern s32 D_80191B88; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181E64[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_80191B78; +extern int D_80191B84; +extern int D_80191B88; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80181E68[])(void); + extern int D_80191B7C; + extern int D_80191B80; + short sVar1; + + D_80181E68[*(unsigned short *)(param_1 + 2)](); + switch (D_80191B78) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80191B80 = 0; + D_80191B7C = 0x46; + D_80191B78 += 1; + break; + case 2: + if (D_80191B7C == 0) { + if (SsGetMute() == 0) { + D_80191B78 += 1; + } + } else { + D_80191B7C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_80191B78 += 1; + } + break; + case 4: + D_80191B84 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_80191B7C = 0xd2; + } else { + D_80191B7C = 1; + } + break; + case 5: + D_80191B7C -= 1; + if (D_80191B7C == -1 || D_80191B88 != 0) { + D_80191B7C = 0; + D_80191B78 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_80191B7C = 0x28; + D_80191B78 += 1; + break; + case 7: + if (D_80191B7C == 0) { + if (SsGetMute() == 0) { + D_80191B78 += 1; + } + } else { + D_80191B7C -= 1; + } + break; + case 8: + D_80191B80 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_80191B78; + +void func_80158BB0(void *arg0) { + if (D_80191B78 == 0) { + D_80191B78 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_80191B84; +extern s32 D_80181E38[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_80191B84; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80181E38[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80191B88; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80191B88 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_80191B78; +extern s32 D_80191B80; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_80191B78 == 4) { + D_80191B78 = 5; + } + if (D_80191B80 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80181EA0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80181EA0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_801588CC", func_801594E8); + + +extern void (*D_801820B4[])(void); + +void func_80159698(void *a0) { + D_801820B4[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80181ED4)); + func_80028620(1, &(*(u8 *)&D_80181ED4) + 0x10); + func_80028620(2, &(*(u8 *)&D_80181ED4) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80182158[])(void); + +void func_80159968(void *a0) { + D_80182158[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801822AC[])(void); + +void func_80159B70(void *a0) { + D_801822AC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801820C8; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801820C8); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_026/ov_SC02_026_jr_80154C24.c b/src/ov_SC02_026/ov_SC02_026_jr_80154C24.c index cb2e054a3..2bbba72a1 100644 --- a/src/ov_SC02_026/ov_SC02_026_jr_80154C24.c +++ b/src/ov_SC02_026/ov_SC02_026_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801884B8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801CEFB8; - -void func_80158BB0(void *arg0) { - if (D_801CEFB8 == 0) { - D_801CEFB8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801CEFC4; -extern s32 D_8018848C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801CEFC4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018848C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801CEFC8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801CEFC8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801CEFB8; -extern s32 D_801CEFC0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801CEFB8 == 4) { - D_801CEFB8 = 5; - } - if (D_801CEFC0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801884F4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801884F4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_80154C24", func_801594E8); - - -extern void (*D_80188708[])(void); - -void func_80159698(void *a0) { - D_80188708[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80188528)); - func_80028620(1, &(*(u8 *)&D_80188528) + 0x10); - func_80028620(2, &(*(u8 *)&D_80188528) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801887AC[])(void); - -void func_80159968(void *a0) { - D_801887AC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80188900[])(void); - -void func_80159B70(void *a0) { - D_80188900[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018871C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018871C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_026/ov_SC02_026_jr_801588CC.c b/src/ov_SC02_026/ov_SC02_026_jr_801588CC.c new file mode 100644 index 000000000..141c540f5 --- /dev/null +++ b/src/ov_SC02_026/ov_SC02_026_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80188654; +extern u8 D_801885C4; +extern u8 D_801885A0; +extern u8 D_8018857C; +extern u8 D_80188630; +extern u8 D_8018860C; +extern u8 D_801885E8; +extern u8 D_80188558; +extern void func_80145934(void); +extern u8 D_801886E4; +extern u8 D_801886C0; +extern u8 D_8018869C; +extern u8 D_80188678; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80187ADC[]; +extern unsigned char D_80187B0C[]; +extern unsigned char D_80187B5C[]; +extern unsigned char D_80187B8C[]; +extern unsigned char D_80187BBC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80187C0C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80187CD4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80187D5C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80187D64; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801CEF78; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801CEF7C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80187D94; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80187E3C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80187E60[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80187E50; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80187E74[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80187E80[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80187E90[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80187EA8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187E98; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80187EBC[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80187ED8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80187EC8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80187EEC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80187F00[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80187F14; +extern void (*D_80187F3C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187F1C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80187F48[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80187F88[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80187F8C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80188180[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801883F0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80188400[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801CEFB0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80188428[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80188408; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80188418; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80188468[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80188470[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018843C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018847C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018844C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801CEFB8; +extern s32 D_801CEFC4; +extern s32 D_801CEFC8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801884B8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801CEFB8; +extern int D_801CEFC4; +extern int D_801CEFC8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801884BC[])(void); + extern int D_801CEFBC; + extern int D_801CEFC0; + short sVar1; + + D_801884BC[*(unsigned short *)(param_1 + 2)](); + switch (D_801CEFB8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801CEFC0 = 0; + D_801CEFBC = 0x46; + D_801CEFB8 += 1; + break; + case 2: + if (D_801CEFBC == 0) { + if (SsGetMute() == 0) { + D_801CEFB8 += 1; + } + } else { + D_801CEFBC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801CEFB8 += 1; + } + break; + case 4: + D_801CEFC4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801CEFBC = 0xd2; + } else { + D_801CEFBC = 1; + } + break; + case 5: + D_801CEFBC -= 1; + if (D_801CEFBC == -1 || D_801CEFC8 != 0) { + D_801CEFBC = 0; + D_801CEFB8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801CEFBC = 0x28; + D_801CEFB8 += 1; + break; + case 7: + if (D_801CEFBC == 0) { + if (SsGetMute() == 0) { + D_801CEFB8 += 1; + } + } else { + D_801CEFBC -= 1; + } + break; + case 8: + D_801CEFC0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801CEFB8; + +void func_80158BB0(void *arg0) { + if (D_801CEFB8 == 0) { + D_801CEFB8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801CEFC4; +extern s32 D_8018848C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801CEFC4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018848C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801CEFC8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801CEFC8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801CEFB8; +extern s32 D_801CEFC0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801CEFB8 == 4) { + D_801CEFB8 = 5; + } + if (D_801CEFC0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801884F4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801884F4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_801588CC", func_801594E8); + + +extern void (*D_80188708[])(void); + +void func_80159698(void *a0) { + D_80188708[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80188528)); + func_80028620(1, &(*(u8 *)&D_80188528) + 0x10); + func_80028620(2, &(*(u8 *)&D_80188528) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801887AC[])(void); + +void func_80159968(void *a0) { + D_801887AC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80188900[])(void); + +void func_80159B70(void *a0) { + D_80188900[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018871C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018871C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_027/ov_SC02_027_jr_80154C24.c b/src/ov_SC02_027/ov_SC02_027_jr_80154C24.c index b56bdd713..42fbe0093 100644 --- a/src/ov_SC02_027/ov_SC02_027_jr_80154C24.c +++ b/src/ov_SC02_027/ov_SC02_027_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018D5DC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801D8D28; - -void func_80158BB0(void *arg0) { - if (D_801D8D28 == 0) { - D_801D8D28 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801D8D34; -extern s32 D_8018D5B0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801D8D34; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018D5B0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801D8D38; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801D8D38 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801D8D28; -extern s32 D_801D8D30; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801D8D28 == 4) { - D_801D8D28 = 5; - } - if (D_801D8D30 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018D618[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018D618; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_80154C24", func_801594E8); - - -extern void (*D_8018D82C[])(void); - -void func_80159698(void *a0) { - D_8018D82C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018D64C)); - func_80028620(1, &(*(u8 *)&D_8018D64C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018D64C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018D8D0[])(void); - -void func_80159968(void *a0) { - D_8018D8D0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018DA24[])(void); - -void func_80159B70(void *a0) { - D_8018DA24[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018D840; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018D840); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_027/ov_SC02_027_jr_801588CC.c b/src/ov_SC02_027/ov_SC02_027_jr_801588CC.c new file mode 100644 index 000000000..de9b460d7 --- /dev/null +++ b/src/ov_SC02_027/ov_SC02_027_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018D778; +extern u8 D_8018D6E8; +extern u8 D_8018D6C4; +extern u8 D_8018D6A0; +extern u8 D_8018D754; +extern u8 D_8018D730; +extern u8 D_8018D70C; +extern u8 D_8018D67C; +extern void func_80145934(void); +extern u8 D_8018D808; +extern u8 D_8018D7E4; +extern u8 D_8018D7C0; +extern u8 D_8018D79C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018CC00[]; +extern unsigned char D_8018CC30[]; +extern unsigned char D_8018CC80[]; +extern unsigned char D_8018CCB0[]; +extern unsigned char D_8018CCE0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018CD30[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018CDF8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018CE80[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018CE88; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801D8CE8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801D8CEC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018CEB8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018CF60[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018CF84[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018CF74; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018CF98[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018CFA4[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018CFB4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018CFCC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018CFBC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018CFE0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018CFFC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018CFEC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018D010[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018D024[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018D038; +extern void (*D_8018D060[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D040; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018D06C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018D0AC[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018D0B0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018D2A4[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018D514[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018D524[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801D8D20; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018D54C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018D52C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018D53C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018D58C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018D594[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018D560; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018D5A0[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018D570; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801D8D28; +extern s32 D_801D8D34; +extern s32 D_801D8D38; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018D5DC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801D8D28; +extern int D_801D8D34; +extern int D_801D8D38; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018D5E0[])(void); + extern int D_801D8D2C; + extern int D_801D8D30; + short sVar1; + + D_8018D5E0[*(unsigned short *)(param_1 + 2)](); + switch (D_801D8D28) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801D8D30 = 0; + D_801D8D2C = 0x46; + D_801D8D28 += 1; + break; + case 2: + if (D_801D8D2C == 0) { + if (SsGetMute() == 0) { + D_801D8D28 += 1; + } + } else { + D_801D8D2C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801D8D28 += 1; + } + break; + case 4: + D_801D8D34 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801D8D2C = 0xd2; + } else { + D_801D8D2C = 1; + } + break; + case 5: + D_801D8D2C -= 1; + if (D_801D8D2C == -1 || D_801D8D38 != 0) { + D_801D8D2C = 0; + D_801D8D28 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801D8D2C = 0x28; + D_801D8D28 += 1; + break; + case 7: + if (D_801D8D2C == 0) { + if (SsGetMute() == 0) { + D_801D8D28 += 1; + } + } else { + D_801D8D2C -= 1; + } + break; + case 8: + D_801D8D30 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801D8D28; + +void func_80158BB0(void *arg0) { + if (D_801D8D28 == 0) { + D_801D8D28 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801D8D34; +extern s32 D_8018D5B0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801D8D34; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018D5B0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801D8D38; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801D8D38 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801D8D28; +extern s32 D_801D8D30; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801D8D28 == 4) { + D_801D8D28 = 5; + } + if (D_801D8D30 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018D618[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018D618; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_801588CC", func_801594E8); + + +extern void (*D_8018D82C[])(void); + +void func_80159698(void *a0) { + D_8018D82C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018D64C)); + func_80028620(1, &(*(u8 *)&D_8018D64C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018D64C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018D8D0[])(void); + +void func_80159968(void *a0) { + D_8018D8D0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018DA24[])(void); + +void func_80159B70(void *a0) { + D_8018DA24[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018D840; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018D840); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_028/ov_SC02_028_jr_80154C24.c b/src/ov_SC02_028/ov_SC02_028_jr_80154C24.c index b158603be..00bbfae01 100644 --- a/src/ov_SC02_028/ov_SC02_028_jr_80154C24.c +++ b/src/ov_SC02_028/ov_SC02_028_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018D7E0[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801D1CC8; - -void func_80158BB0(void *arg0) { - if (D_801D1CC8 == 0) { - D_801D1CC8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801D1CD4; -extern s32 D_8018D7B4[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801D1CD4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018D7B4[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801D1CD8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801D1CD8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801D1CC8; -extern s32 D_801D1CD0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801D1CC8 == 4) { - D_801D1CC8 = 5; - } - if (D_801D1CD0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018D81C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018D81C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_80154C24", func_801594E8); - - -extern void (*D_8018DA30[])(void); - -void func_80159698(void *a0) { - D_8018DA30[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018D850)); - func_80028620(1, &(*(u8 *)&D_8018D850) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018D850) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018DAD4[])(void); - -void func_80159968(void *a0) { - D_8018DAD4[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018DC28[])(void); - -void func_80159B70(void *a0) { - D_8018DC28[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018DA44; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018DA44); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_028/ov_SC02_028_jr_801588CC.c b/src/ov_SC02_028/ov_SC02_028_jr_801588CC.c new file mode 100644 index 000000000..e85dbbb61 --- /dev/null +++ b/src/ov_SC02_028/ov_SC02_028_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018D97C; +extern u8 D_8018D8EC; +extern u8 D_8018D8C8; +extern u8 D_8018D8A4; +extern u8 D_8018D958; +extern u8 D_8018D934; +extern u8 D_8018D910; +extern u8 D_8018D880; +extern void func_80145934(void); +extern u8 D_8018DA0C; +extern u8 D_8018D9E8; +extern u8 D_8018D9C4; +extern u8 D_8018D9A0; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018CE04[]; +extern unsigned char D_8018CE34[]; +extern unsigned char D_8018CE84[]; +extern unsigned char D_8018CEB4[]; +extern unsigned char D_8018CEE4[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018CF34[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018CFFC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018D084[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018D08C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801D1C88; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801D1C8C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018D0BC; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018D164[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018D188[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018D178; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018D19C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018D1A8[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018D1B8[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018D1D0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D1C0; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018D1E4[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018D200[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D1F0; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018D214[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018D228[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018D23C; +extern void (*D_8018D264[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D244; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018D270[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018D2B0[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018D2B4[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018D4A8[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018D718[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018D728[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801D1CC0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018D750[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018D730; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018D740; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018D790[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018D798[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018D764; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018D7A4[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018D774; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801D1CC8; +extern s32 D_801D1CD4; +extern s32 D_801D1CD8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018D7E0[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801D1CC8; +extern int D_801D1CD4; +extern int D_801D1CD8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018D7E4[])(void); + extern int D_801D1CCC; + extern int D_801D1CD0; + short sVar1; + + D_8018D7E4[*(unsigned short *)(param_1 + 2)](); + switch (D_801D1CC8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801D1CD0 = 0; + D_801D1CCC = 0x46; + D_801D1CC8 += 1; + break; + case 2: + if (D_801D1CCC == 0) { + if (SsGetMute() == 0) { + D_801D1CC8 += 1; + } + } else { + D_801D1CCC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801D1CC8 += 1; + } + break; + case 4: + D_801D1CD4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801D1CCC = 0xd2; + } else { + D_801D1CCC = 1; + } + break; + case 5: + D_801D1CCC -= 1; + if (D_801D1CCC == -1 || D_801D1CD8 != 0) { + D_801D1CCC = 0; + D_801D1CC8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801D1CCC = 0x28; + D_801D1CC8 += 1; + break; + case 7: + if (D_801D1CCC == 0) { + if (SsGetMute() == 0) { + D_801D1CC8 += 1; + } + } else { + D_801D1CCC -= 1; + } + break; + case 8: + D_801D1CD0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801D1CC8; + +void func_80158BB0(void *arg0) { + if (D_801D1CC8 == 0) { + D_801D1CC8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801D1CD4; +extern s32 D_8018D7B4[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801D1CD4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018D7B4[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801D1CD8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801D1CD8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801D1CC8; +extern s32 D_801D1CD0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801D1CC8 == 4) { + D_801D1CC8 = 5; + } + if (D_801D1CD0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018D81C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018D81C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_801588CC", func_801594E8); + + +extern void (*D_8018DA30[])(void); + +void func_80159698(void *a0) { + D_8018DA30[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018D850)); + func_80028620(1, &(*(u8 *)&D_8018D850) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018D850) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018DAD4[])(void); + +void func_80159968(void *a0) { + D_8018DAD4[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018DC28[])(void); + +void func_80159B70(void *a0) { + D_8018DC28[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018DA44; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018DA44); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_031/ov_SC02_031_jr_80154C24.c b/src/ov_SC02_031/ov_SC02_031_jr_80154C24.c index 1ce0e55dc..01eb66d3e 100644 --- a/src/ov_SC02_031/ov_SC02_031_jr_80154C24.c +++ b/src/ov_SC02_031/ov_SC02_031_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018700C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B6440; - -void func_80158BB0(void *arg0) { - if (D_801B6440 == 0) { - D_801B6440 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B644C; -extern s32 D_80186FE0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B644C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80186FE0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B6450; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B6450 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B6440; -extern s32 D_801B6448; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B6440 == 4) { - D_801B6440 = 5; - } - if (D_801B6448 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80187048[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80187048; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_80154C24", func_801594E8); - - -extern void (*D_8018725C[])(void); - -void func_80159698(void *a0) { - D_8018725C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018707C)); - func_80028620(1, &(*(u8 *)&D_8018707C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018707C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80187300[])(void); - -void func_80159968(void *a0) { - D_80187300[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80187454[])(void); - -void func_80159B70(void *a0) { - D_80187454[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80187270; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187270); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_031/ov_SC02_031_jr_801588CC.c b/src/ov_SC02_031/ov_SC02_031_jr_801588CC.c new file mode 100644 index 000000000..a9ac7d44f --- /dev/null +++ b/src/ov_SC02_031/ov_SC02_031_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801871A8; +extern u8 D_80187118; +extern u8 D_801870F4; +extern u8 D_801870D0; +extern u8 D_80187184; +extern u8 D_80187160; +extern u8 D_8018713C; +extern u8 D_801870AC; +extern void func_80145934(void); +extern u8 D_80187238; +extern u8 D_80187214; +extern u8 D_801871F0; +extern u8 D_801871CC; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80186630[]; +extern unsigned char D_80186660[]; +extern unsigned char D_801866B0[]; +extern unsigned char D_801866E0[]; +extern unsigned char D_80186710[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80186760[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80186828[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801868B0[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801868B8; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B6400; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B6404; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801868E8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80186990[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801869B4[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801869A4; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801869C8[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801869D4[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801869E4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801869FC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801869EC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80186A10[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80186A2C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186A1C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80186A40[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80186A54[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80186A68; +extern void (*D_80186A90[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186A70; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80186A9C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80186ADC[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80186AE0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80186CD4[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80186F44[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80186F54[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B6438; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186F7C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80186F5C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80186F6C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80186FBC[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80186FC4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186F90; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80186FD0[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80186FA0; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B6440; +extern s32 D_801B644C; +extern s32 D_801B6450; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018700C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B6440; +extern int D_801B644C; +extern int D_801B6450; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80187010[])(void); + extern int D_801B6444; + extern int D_801B6448; + short sVar1; + + D_80187010[*(unsigned short *)(param_1 + 2)](); + switch (D_801B6440) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B6448 = 0; + D_801B6444 = 0x46; + D_801B6440 += 1; + break; + case 2: + if (D_801B6444 == 0) { + if (SsGetMute() == 0) { + D_801B6440 += 1; + } + } else { + D_801B6444 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B6440 += 1; + } + break; + case 4: + D_801B644C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B6444 = 0xd2; + } else { + D_801B6444 = 1; + } + break; + case 5: + D_801B6444 -= 1; + if (D_801B6444 == -1 || D_801B6450 != 0) { + D_801B6444 = 0; + D_801B6440 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B6444 = 0x28; + D_801B6440 += 1; + break; + case 7: + if (D_801B6444 == 0) { + if (SsGetMute() == 0) { + D_801B6440 += 1; + } + } else { + D_801B6444 -= 1; + } + break; + case 8: + D_801B6448 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B6440; + +void func_80158BB0(void *arg0) { + if (D_801B6440 == 0) { + D_801B6440 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B644C; +extern s32 D_80186FE0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B644C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80186FE0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B6450; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B6450 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B6440; +extern s32 D_801B6448; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B6440 == 4) { + D_801B6440 = 5; + } + if (D_801B6448 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80187048[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80187048; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_801588CC", func_801594E8); + + +extern void (*D_8018725C[])(void); + +void func_80159698(void *a0) { + D_8018725C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018707C)); + func_80028620(1, &(*(u8 *)&D_8018707C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018707C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80187300[])(void); + +void func_80159968(void *a0) { + D_80187300[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80187454[])(void); + +void func_80159B70(void *a0) { + D_80187454[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80187270; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187270); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_035/ov_SC02_035_jr_80154C24.c b/src/ov_SC02_035/ov_SC02_035_jr_80154C24.c index 4f4f13472..51851feed 100644 --- a/src/ov_SC02_035/ov_SC02_035_jr_80154C24.c +++ b/src/ov_SC02_035/ov_SC02_035_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018686C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801BD770; - -void func_80158BB0(void *arg0) { - if (D_801BD770 == 0) { - D_801BD770 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801BD77C; -extern s32 D_80186840[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801BD77C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80186840[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801BD780; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801BD780 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801BD770; -extern s32 D_801BD778; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801BD770 == 4) { - D_801BD770 = 5; - } - if (D_801BD778 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801868A8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801868A8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_80154C24", func_801594E8); - - -extern void (*D_80186ABC[])(void); - -void func_80159698(void *a0) { - D_80186ABC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801868DC)); - func_80028620(1, &(*(u8 *)&D_801868DC) + 0x10); - func_80028620(2, &(*(u8 *)&D_801868DC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80186B60[])(void); - -void func_80159968(void *a0) { - D_80186B60[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80186CB4[])(void); - -void func_80159B70(void *a0) { - D_80186CB4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80186AD0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186AD0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_035/ov_SC02_035_jr_801588CC.c b/src/ov_SC02_035/ov_SC02_035_jr_801588CC.c new file mode 100644 index 000000000..cc666930c --- /dev/null +++ b/src/ov_SC02_035/ov_SC02_035_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80186A08; +extern u8 D_80186978; +extern u8 D_80186954; +extern u8 D_80186930; +extern u8 D_801869E4; +extern u8 D_801869C0; +extern u8 D_8018699C; +extern u8 D_8018690C; +extern void func_80145934(void); +extern u8 D_80186A98; +extern u8 D_80186A74; +extern u8 D_80186A50; +extern u8 D_80186A2C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80185E90[]; +extern unsigned char D_80185EC0[]; +extern unsigned char D_80185F10[]; +extern unsigned char D_80185F40[]; +extern unsigned char D_80185F70[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80185FC0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80186088[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80186110[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80186118; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801BD730; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801BD734; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80186148; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801861F0[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80186214[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80186204; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80186228[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80186234[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80186244[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018625C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018624C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80186270[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018628C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018627C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801862A0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801862B4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801862C8; +extern void (*D_801862F0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801862D0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801862FC[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018633C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80186340[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80186534[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801867A4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801867B4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801BD768; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801867DC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801867BC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801867CC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018681C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80186824[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801867F0; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80186830[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80186800; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801BD770; +extern s32 D_801BD77C; +extern s32 D_801BD780; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018686C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801BD770; +extern int D_801BD77C; +extern int D_801BD780; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80186870[])(void); + extern int D_801BD774; + extern int D_801BD778; + short sVar1; + + D_80186870[*(unsigned short *)(param_1 + 2)](); + switch (D_801BD770) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801BD778 = 0; + D_801BD774 = 0x46; + D_801BD770 += 1; + break; + case 2: + if (D_801BD774 == 0) { + if (SsGetMute() == 0) { + D_801BD770 += 1; + } + } else { + D_801BD774 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801BD770 += 1; + } + break; + case 4: + D_801BD77C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801BD774 = 0xd2; + } else { + D_801BD774 = 1; + } + break; + case 5: + D_801BD774 -= 1; + if (D_801BD774 == -1 || D_801BD780 != 0) { + D_801BD774 = 0; + D_801BD770 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801BD774 = 0x28; + D_801BD770 += 1; + break; + case 7: + if (D_801BD774 == 0) { + if (SsGetMute() == 0) { + D_801BD770 += 1; + } + } else { + D_801BD774 -= 1; + } + break; + case 8: + D_801BD778 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801BD770; + +void func_80158BB0(void *arg0) { + if (D_801BD770 == 0) { + D_801BD770 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801BD77C; +extern s32 D_80186840[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801BD77C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80186840[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801BD780; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801BD780 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801BD770; +extern s32 D_801BD778; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801BD770 == 4) { + D_801BD770 = 5; + } + if (D_801BD778 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801868A8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801868A8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_801588CC", func_801594E8); + + +extern void (*D_80186ABC[])(void); + +void func_80159698(void *a0) { + D_80186ABC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801868DC)); + func_80028620(1, &(*(u8 *)&D_801868DC) + 0x10); + func_80028620(2, &(*(u8 *)&D_801868DC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80186B60[])(void); + +void func_80159968(void *a0) { + D_80186B60[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80186CB4[])(void); + +void func_80159B70(void *a0) { + D_80186CB4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80186AD0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186AD0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_039/ov_SC02_039_jr_80154C24.c b/src/ov_SC02_039/ov_SC02_039_jr_80154C24.c index 92bdec098..6e73c7dd8 100644 --- a/src/ov_SC02_039/ov_SC02_039_jr_80154C24.c +++ b/src/ov_SC02_039/ov_SC02_039_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80181498[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019FB20; - -void func_80158BB0(void *arg0) { - if (D_8019FB20 == 0) { - D_8019FB20 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019FB2C; -extern s32 D_8018146C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019FB2C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018146C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019FB30; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019FB30 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019FB20; -extern s32 D_8019FB28; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019FB20 == 4) { - D_8019FB20 = 5; - } - if (D_8019FB28 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801814D4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801814D4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_80154C24", func_801594E8); - - -extern void (*D_801816E8[])(void); - -void func_80159698(void *a0) { - D_801816E8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80181508)); - func_80028620(1, &(*(u8 *)&D_80181508) + 0x10); - func_80028620(2, &(*(u8 *)&D_80181508) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018178C[])(void); - -void func_80159968(void *a0) { - D_8018178C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801818E0[])(void); - -void func_80159B70(void *a0) { - D_801818E0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801816FC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801816FC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_039/ov_SC02_039_jr_801588CC.c b/src/ov_SC02_039/ov_SC02_039_jr_801588CC.c new file mode 100644 index 000000000..04eb1a74c --- /dev/null +++ b/src/ov_SC02_039/ov_SC02_039_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80181634; +extern u8 D_801815A4; +extern u8 D_80181580; +extern u8 D_8018155C; +extern u8 D_80181610; +extern u8 D_801815EC; +extern u8 D_801815C8; +extern u8 D_80181538; +extern void func_80145934(void); +extern u8 D_801816C4; +extern u8 D_801816A0; +extern u8 D_8018167C; +extern u8 D_80181658; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80180ABC[]; +extern unsigned char D_80180AEC[]; +extern unsigned char D_80180B3C[]; +extern unsigned char D_80180B6C[]; +extern unsigned char D_80180B9C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80180BEC[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80180CB4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180D3C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180D44; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019FAE0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019FAE4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180D74; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80180E1C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180E40[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80180E30; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80180E54[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80180E60[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80180E70[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80180E88[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180E78; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80180E9C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80180EB8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180EA8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80180ECC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80180EE0[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80180EF4; +extern void (*D_80180F1C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180EFC; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80180F28[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80180F68[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80180F6C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80181160[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801813D0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801813E0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019FB18; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181408[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801813E8; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801813F8; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80181448[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80181450[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018141C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018145C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018142C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019FB20; +extern s32 D_8019FB2C; +extern s32 D_8019FB30; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181498[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019FB20; +extern int D_8019FB2C; +extern int D_8019FB30; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018149C[])(void); + extern int D_8019FB24; + extern int D_8019FB28; + short sVar1; + + D_8018149C[*(unsigned short *)(param_1 + 2)](); + switch (D_8019FB20) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019FB28 = 0; + D_8019FB24 = 0x46; + D_8019FB20 += 1; + break; + case 2: + if (D_8019FB24 == 0) { + if (SsGetMute() == 0) { + D_8019FB20 += 1; + } + } else { + D_8019FB24 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019FB20 += 1; + } + break; + case 4: + D_8019FB2C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019FB24 = 0xd2; + } else { + D_8019FB24 = 1; + } + break; + case 5: + D_8019FB24 -= 1; + if (D_8019FB24 == -1 || D_8019FB30 != 0) { + D_8019FB24 = 0; + D_8019FB20 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019FB24 = 0x28; + D_8019FB20 += 1; + break; + case 7: + if (D_8019FB24 == 0) { + if (SsGetMute() == 0) { + D_8019FB20 += 1; + } + } else { + D_8019FB24 -= 1; + } + break; + case 8: + D_8019FB28 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019FB20; + +void func_80158BB0(void *arg0) { + if (D_8019FB20 == 0) { + D_8019FB20 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019FB2C; +extern s32 D_8018146C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019FB2C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018146C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019FB30; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019FB30 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019FB20; +extern s32 D_8019FB28; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019FB20 == 4) { + D_8019FB20 = 5; + } + if (D_8019FB28 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801814D4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801814D4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_801588CC", func_801594E8); + + +extern void (*D_801816E8[])(void); + +void func_80159698(void *a0) { + D_801816E8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80181508)); + func_80028620(1, &(*(u8 *)&D_80181508) + 0x10); + func_80028620(2, &(*(u8 *)&D_80181508) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018178C[])(void); + +void func_80159968(void *a0) { + D_8018178C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801818E0[])(void); + +void func_80159B70(void *a0) { + D_801818E0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801816FC; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801816FC); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC02_041/ov_SC02_041_jr_80154C24.c b/src/ov_SC02_041/ov_SC02_041_jr_80154C24.c index bc7d4d9fe..2c0652e33 100644 --- a/src/ov_SC02_041/ov_SC02_041_jr_80154C24.c +++ b/src/ov_SC02_041/ov_SC02_041_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80187168[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B7E98; - -void func_80158BB0(void *arg0) { - if (D_801B7E98 == 0) { - D_801B7E98 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B7EA4; -extern s32 D_8018713C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B7EA4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018713C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B7EA8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B7EA8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B7E98; -extern s32 D_801B7EA0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B7E98 == 4) { - D_801B7E98 = 5; - } - if (D_801B7EA0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801871A4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801871A4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_80154C24", func_801594E8); - - -extern void (*D_801873B8[])(void); - -void func_80159698(void *a0) { - D_801873B8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801871D8)); - func_80028620(1, &(*(u8 *)&D_801871D8) + 0x10); - func_80028620(2, &(*(u8 *)&D_801871D8) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018745C[])(void); - -void func_80159968(void *a0) { - D_8018745C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801875B0[])(void); - -void func_80159B70(void *a0) { - D_801875B0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801873CC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801873CC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC02_041/ov_SC02_041_jr_801588CC.c b/src/ov_SC02_041/ov_SC02_041_jr_801588CC.c new file mode 100644 index 000000000..aa023573a --- /dev/null +++ b/src/ov_SC02_041/ov_SC02_041_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80187304; +extern u8 D_80187274; +extern u8 D_80187250; +extern u8 D_8018722C; +extern u8 D_801872E0; +extern u8 D_801872BC; +extern u8 D_80187298; +extern u8 D_80187208; +extern void func_80145934(void); +extern u8 D_80187394; +extern u8 D_80187370; +extern u8 D_8018734C; +extern u8 D_80187328; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018678C[]; +extern unsigned char D_801867BC[]; +extern unsigned char D_8018680C[]; +extern unsigned char D_8018683C[]; +extern unsigned char D_8018686C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801868BC[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80186984[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80186A0C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80186A14; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B7E58; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B7E5C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80186A44; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80186AEC[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80186B10[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80186B00; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80186B24[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80186B30[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80186B40[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80186B58[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186B48; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80186B6C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80186B88[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186B78; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80186B9C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80186BB0[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80186BC4; +extern void (*D_80186BEC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186BCC; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80186BF8[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80186C38[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80186C3C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80186E30[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801870A0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801870B0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B7E90; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801870D8[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801870B8; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801870C8; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80187118[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80187120[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801870EC; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018712C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801870FC; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B7E98; +extern s32 D_801B7EA4; +extern s32 D_801B7EA8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187168[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B7E98; +extern int D_801B7EA4; +extern int D_801B7EA8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018716C[])(void); + extern int D_801B7E9C; + extern int D_801B7EA0; + short sVar1; + + D_8018716C[*(unsigned short *)(param_1 + 2)](); + switch (D_801B7E98) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B7EA0 = 0; + D_801B7E9C = 0x46; + D_801B7E98 += 1; + break; + case 2: + if (D_801B7E9C == 0) { + if (SsGetMute() == 0) { + D_801B7E98 += 1; + } + } else { + D_801B7E9C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B7E98 += 1; + } + break; + case 4: + D_801B7EA4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B7E9C = 0xd2; + } else { + D_801B7E9C = 1; + } + break; + case 5: + D_801B7E9C -= 1; + if (D_801B7E9C == -1 || D_801B7EA8 != 0) { + D_801B7E9C = 0; + D_801B7E98 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B7E9C = 0x28; + D_801B7E98 += 1; + break; + case 7: + if (D_801B7E9C == 0) { + if (SsGetMute() == 0) { + D_801B7E98 += 1; + } + } else { + D_801B7E9C -= 1; + } + break; + case 8: + D_801B7EA0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B7E98; + +void func_80158BB0(void *arg0) { + if (D_801B7E98 == 0) { + D_801B7E98 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B7EA4; +extern s32 D_8018713C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B7EA4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018713C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B7EA8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B7EA8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B7E98; +extern s32 D_801B7EA0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B7E98 == 4) { + D_801B7E98 = 5; + } + if (D_801B7EA0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801871A4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801871A4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_801588CC", func_801594E8); + + +extern void (*D_801873B8[])(void); + +void func_80159698(void *a0) { + D_801873B8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801871D8)); + func_80028620(1, &(*(u8 *)&D_801871D8) + 0x10); + func_80028620(2, &(*(u8 *)&D_801871D8) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018745C[])(void); + +void func_80159968(void *a0) { + D_8018745C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801875B0[])(void); + +void func_80159B70(void *a0) { + D_801875B0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801873CC; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801873CC); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_001/ov_SC03_001_jr_80154C24.c b/src/ov_SC03_001/ov_SC03_001_jr_80154C24.c index a9081e5f5..c5e72c5e4 100644 --- a/src/ov_SC03_001/ov_SC03_001_jr_80154C24.c +++ b/src/ov_SC03_001/ov_SC03_001_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018F8A8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801ED518; - -void func_80158BB0(void *arg0) { - if (D_801ED518 == 0) { - D_801ED518 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801ED524; -extern s32 D_8018F87C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801ED524; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018F87C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801ED528; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801ED528 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801ED518; -extern s32 D_801ED520; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801ED518 == 4) { - D_801ED518 = 5; - } - if (D_801ED520 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018F8E4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018F8E4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_80154C24", func_801594E8); - - -extern void (*D_8018FAF8[])(void); - -void func_80159698(void *a0) { - D_8018FAF8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018F918)); - func_80028620(1, &(*(u8 *)&D_8018F918) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018F918) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018FB9C[])(void); - -void func_80159968(void *a0) { - D_8018FB9C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018FCF0[])(void); - -void func_80159B70(void *a0) { - D_8018FCF0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018FB0C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018FB0C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_001/ov_SC03_001_jr_801588CC.c b/src/ov_SC03_001/ov_SC03_001_jr_801588CC.c new file mode 100644 index 000000000..0ef934dbc --- /dev/null +++ b/src/ov_SC03_001/ov_SC03_001_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018FA44; +extern u8 D_8018F9B4; +extern u8 D_8018F990; +extern u8 D_8018F96C; +extern u8 D_8018FA20; +extern u8 D_8018F9FC; +extern u8 D_8018F9D8; +extern u8 D_8018F948; +extern void func_80145934(void); +extern u8 D_8018FAD4; +extern u8 D_8018FAB0; +extern u8 D_8018FA8C; +extern u8 D_8018FA68; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018EECC[]; +extern unsigned char D_8018EEFC[]; +extern unsigned char D_8018EF4C[]; +extern unsigned char D_8018EF7C[]; +extern unsigned char D_8018EFAC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018EFFC[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018F0C4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018F14C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018F154; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801ED4D8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801ED4DC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018F184; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018F22C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018F250[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018F240; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018F264[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018F270[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018F280[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018F298[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018F288; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018F2AC[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018F2C8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018F2B8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018F2DC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018F2F0[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018F304; +extern void (*D_8018F32C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018F30C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018F338[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018F378[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018F37C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018F570[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018F7E0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018F7F0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801ED510; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018F818[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018F7F8; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018F808; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018F858[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018F860[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018F82C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018F86C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018F83C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801ED518; +extern s32 D_801ED524; +extern s32 D_801ED528; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018F8A8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801ED518; +extern int D_801ED524; +extern int D_801ED528; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018F8AC[])(void); + extern int D_801ED51C; + extern int D_801ED520; + short sVar1; + + D_8018F8AC[*(unsigned short *)(param_1 + 2)](); + switch (D_801ED518) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801ED520 = 0; + D_801ED51C = 0x46; + D_801ED518 += 1; + break; + case 2: + if (D_801ED51C == 0) { + if (SsGetMute() == 0) { + D_801ED518 += 1; + } + } else { + D_801ED51C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801ED518 += 1; + } + break; + case 4: + D_801ED524 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801ED51C = 0xd2; + } else { + D_801ED51C = 1; + } + break; + case 5: + D_801ED51C -= 1; + if (D_801ED51C == -1 || D_801ED528 != 0) { + D_801ED51C = 0; + D_801ED518 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801ED51C = 0x28; + D_801ED518 += 1; + break; + case 7: + if (D_801ED51C == 0) { + if (SsGetMute() == 0) { + D_801ED518 += 1; + } + } else { + D_801ED51C -= 1; + } + break; + case 8: + D_801ED520 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801ED518; + +void func_80158BB0(void *arg0) { + if (D_801ED518 == 0) { + D_801ED518 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801ED524; +extern s32 D_8018F87C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801ED524; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018F87C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801ED528; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801ED528 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801ED518; +extern s32 D_801ED520; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801ED518 == 4) { + D_801ED518 = 5; + } + if (D_801ED520 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018F8E4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018F8E4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_801588CC", func_801594E8); + + +extern void (*D_8018FAF8[])(void); + +void func_80159698(void *a0) { + D_8018FAF8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018F918)); + func_80028620(1, &(*(u8 *)&D_8018F918) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018F918) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018FB9C[])(void); + +void func_80159968(void *a0) { + D_8018FB9C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018FCF0[])(void); + +void func_80159B70(void *a0) { + D_8018FCF0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018FB0C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018FB0C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_002/ov_SC03_002_jr_80154C24.c b/src/ov_SC03_002/ov_SC03_002_jr_80154C24.c index e6657e77e..4ea6d40e5 100644 --- a/src/ov_SC03_002/ov_SC03_002_jr_80154C24.c +++ b/src/ov_SC03_002/ov_SC03_002_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80187898[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801CA598; - -void func_80158BB0(void *arg0) { - if (D_801CA598 == 0) { - D_801CA598 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801CA5A4; -extern s32 D_8018786C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801CA5A4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018786C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801CA5A8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801CA5A8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801CA598; -extern s32 D_801CA5A0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801CA598 == 4) { - D_801CA598 = 5; - } - if (D_801CA5A0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801878D4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801878D4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_80154C24", func_801594E8); - - -extern void (*D_80187AE8[])(void); - -void func_80159698(void *a0) { - D_80187AE8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80187908)); - func_80028620(1, &(*(u8 *)&D_80187908) + 0x10); - func_80028620(2, &(*(u8 *)&D_80187908) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80187B8C[])(void); - -void func_80159968(void *a0) { - D_80187B8C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80187CE0[])(void); - -void func_80159B70(void *a0) { - D_80187CE0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80187AFC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187AFC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_002/ov_SC03_002_jr_801588CC.c b/src/ov_SC03_002/ov_SC03_002_jr_801588CC.c new file mode 100644 index 000000000..634fb59da --- /dev/null +++ b/src/ov_SC03_002/ov_SC03_002_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80187A34; +extern u8 D_801879A4; +extern u8 D_80187980; +extern u8 D_8018795C; +extern u8 D_80187A10; +extern u8 D_801879EC; +extern u8 D_801879C8; +extern u8 D_80187938; +extern void func_80145934(void); +extern u8 D_80187AC4; +extern u8 D_80187AA0; +extern u8 D_80187A7C; +extern u8 D_80187A58; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80186EBC[]; +extern unsigned char D_80186EEC[]; +extern unsigned char D_80186F3C[]; +extern unsigned char D_80186F6C[]; +extern unsigned char D_80186F9C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80186FEC[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801870B4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018713C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80187144; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801CA558; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801CA55C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80187174; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018721C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80187240[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80187230; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80187254[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80187260[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80187270[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80187288[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187278; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018729C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801872B8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801872A8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801872CC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801872E0[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801872F4; +extern void (*D_8018731C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801872FC; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80187328[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80187368[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018736C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80187560[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801877D0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801877E0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801CA590; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80187808[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801877E8; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801877F8; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80187848[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80187850[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018781C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018785C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018782C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801CA598; +extern s32 D_801CA5A4; +extern s32 D_801CA5A8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187898[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801CA598; +extern int D_801CA5A4; +extern int D_801CA5A8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018789C[])(void); + extern int D_801CA59C; + extern int D_801CA5A0; + short sVar1; + + D_8018789C[*(unsigned short *)(param_1 + 2)](); + switch (D_801CA598) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801CA5A0 = 0; + D_801CA59C = 0x46; + D_801CA598 += 1; + break; + case 2: + if (D_801CA59C == 0) { + if (SsGetMute() == 0) { + D_801CA598 += 1; + } + } else { + D_801CA59C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801CA598 += 1; + } + break; + case 4: + D_801CA5A4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801CA59C = 0xd2; + } else { + D_801CA59C = 1; + } + break; + case 5: + D_801CA59C -= 1; + if (D_801CA59C == -1 || D_801CA5A8 != 0) { + D_801CA59C = 0; + D_801CA598 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801CA59C = 0x28; + D_801CA598 += 1; + break; + case 7: + if (D_801CA59C == 0) { + if (SsGetMute() == 0) { + D_801CA598 += 1; + } + } else { + D_801CA59C -= 1; + } + break; + case 8: + D_801CA5A0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801CA598; + +void func_80158BB0(void *arg0) { + if (D_801CA598 == 0) { + D_801CA598 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801CA5A4; +extern s32 D_8018786C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801CA5A4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018786C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801CA5A8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801CA5A8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801CA598; +extern s32 D_801CA5A0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801CA598 == 4) { + D_801CA598 = 5; + } + if (D_801CA5A0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801878D4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801878D4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_801588CC", func_801594E8); + + +extern void (*D_80187AE8[])(void); + +void func_80159698(void *a0) { + D_80187AE8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80187908)); + func_80028620(1, &(*(u8 *)&D_80187908) + 0x10); + func_80028620(2, &(*(u8 *)&D_80187908) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80187B8C[])(void); + +void func_80159968(void *a0) { + D_80187B8C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80187CE0[])(void); + +void func_80159B70(void *a0) { + D_80187CE0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80187AFC; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187AFC); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_003/ov_SC03_003_jr_80154C24.c b/src/ov_SC03_003/ov_SC03_003_jr_80154C24.c index 8342892a8..a6af78fb9 100644 --- a/src/ov_SC03_003/ov_SC03_003_jr_80154C24.c +++ b/src/ov_SC03_003/ov_SC03_003_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80181660[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8018E8A0; - -void func_80158BB0(void *arg0) { - if (D_8018E8A0 == 0) { - D_8018E8A0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8018E8AC; -extern s32 D_80181634[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8018E8AC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80181634[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8018E8B0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8018E8B0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8018E8A0; -extern s32 D_8018E8A8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8018E8A0 == 4) { - D_8018E8A0 = 5; - } - if (D_8018E8A8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018169C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018169C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_80154C24", func_801594E8); - - -extern void (*D_801818B0[])(void); - -void func_80159698(void *a0) { - D_801818B0[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801816D0)); - func_80028620(1, &(*(u8 *)&D_801816D0) + 0x10); - func_80028620(2, &(*(u8 *)&D_801816D0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80181954[])(void); - -void func_80159968(void *a0) { - D_80181954[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80181AA8[])(void); - -void func_80159B70(void *a0) { - D_80181AA8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801818C4; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801818C4); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_003/ov_SC03_003_jr_801588CC.c b/src/ov_SC03_003/ov_SC03_003_jr_801588CC.c new file mode 100644 index 000000000..ff305ac55 --- /dev/null +++ b/src/ov_SC03_003/ov_SC03_003_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801817FC; +extern u8 D_8018176C; +extern u8 D_80181748; +extern u8 D_80181724; +extern u8 D_801817D8; +extern u8 D_801817B4; +extern u8 D_80181790; +extern u8 D_80181700; +extern void func_80145934(void); +extern u8 D_8018188C; +extern u8 D_80181868; +extern u8 D_80181844; +extern u8 D_80181820; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80180C84[]; +extern unsigned char D_80180CB4[]; +extern unsigned char D_80180D04[]; +extern unsigned char D_80180D34[]; +extern unsigned char D_80180D64[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80180DB4[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80180E7C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180F04[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180F0C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8018E860; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8018E864; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180F3C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80180FE4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80181008[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80180FF8; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018101C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80181028[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80181038[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80181050[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181040; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80181064[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80181080[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181070; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80181094[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801810A8[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801810BC; +extern void (*D_801810E4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801810C4; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801810F0[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80181130[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80181134[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80181328[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80181598[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801815A8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8018E898; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801815D0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801815B0; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801815C0; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80181610[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80181618[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801815E4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80181624[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801815F4; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8018E8A0; +extern s32 D_8018E8AC; +extern s32 D_8018E8B0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181660[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8018E8A0; +extern int D_8018E8AC; +extern int D_8018E8B0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80181664[])(void); + extern int D_8018E8A4; + extern int D_8018E8A8; + short sVar1; + + D_80181664[*(unsigned short *)(param_1 + 2)](); + switch (D_8018E8A0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8018E8A8 = 0; + D_8018E8A4 = 0x46; + D_8018E8A0 += 1; + break; + case 2: + if (D_8018E8A4 == 0) { + if (SsGetMute() == 0) { + D_8018E8A0 += 1; + } + } else { + D_8018E8A4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8018E8A0 += 1; + } + break; + case 4: + D_8018E8AC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8018E8A4 = 0xd2; + } else { + D_8018E8A4 = 1; + } + break; + case 5: + D_8018E8A4 -= 1; + if (D_8018E8A4 == -1 || D_8018E8B0 != 0) { + D_8018E8A4 = 0; + D_8018E8A0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8018E8A4 = 0x28; + D_8018E8A0 += 1; + break; + case 7: + if (D_8018E8A4 == 0) { + if (SsGetMute() == 0) { + D_8018E8A0 += 1; + } + } else { + D_8018E8A4 -= 1; + } + break; + case 8: + D_8018E8A8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8018E8A0; + +void func_80158BB0(void *arg0) { + if (D_8018E8A0 == 0) { + D_8018E8A0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8018E8AC; +extern s32 D_80181634[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8018E8AC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80181634[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8018E8B0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8018E8B0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8018E8A0; +extern s32 D_8018E8A8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8018E8A0 == 4) { + D_8018E8A0 = 5; + } + if (D_8018E8A8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018169C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018169C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_801588CC", func_801594E8); + + +extern void (*D_801818B0[])(void); + +void func_80159698(void *a0) { + D_801818B0[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801816D0)); + func_80028620(1, &(*(u8 *)&D_801816D0) + 0x10); + func_80028620(2, &(*(u8 *)&D_801816D0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80181954[])(void); + +void func_80159968(void *a0) { + D_80181954[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80181AA8[])(void); + +void func_80159B70(void *a0) { + D_80181AA8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801818C4; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801818C4); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_006/ov_SC03_006_jr_80154C24.c b/src/ov_SC03_006/ov_SC03_006_jr_80154C24.c index 47a86776a..2ac3e9895 100644 --- a/src/ov_SC03_006/ov_SC03_006_jr_80154C24.c +++ b/src/ov_SC03_006/ov_SC03_006_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018E97C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801F6218; - -void func_80158BB0(void *arg0) { - if (D_801F6218 == 0) { - D_801F6218 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801F6224; -extern s32 D_8018E950[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801F6224; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018E950[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801F6228; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801F6228 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801F6218; -extern s32 D_801F6220; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801F6218 == 4) { - D_801F6218 = 5; - } - if (D_801F6220 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018E9B8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018E9B8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_80154C24", func_801594E8); - - -extern void (*D_8018EBCC[])(void); - -void func_80159698(void *a0) { - D_8018EBCC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018E9EC)); - func_80028620(1, &(*(u8 *)&D_8018E9EC) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018E9EC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018EC70[])(void); - -void func_80159968(void *a0) { - D_8018EC70[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018EDC4[])(void); - -void func_80159B70(void *a0) { - D_8018EDC4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018EBE0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018EBE0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_006/ov_SC03_006_jr_801588CC.c b/src/ov_SC03_006/ov_SC03_006_jr_801588CC.c new file mode 100644 index 000000000..c5da28c4d --- /dev/null +++ b/src/ov_SC03_006/ov_SC03_006_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018EB18; +extern u8 D_8018EA88; +extern u8 D_8018EA64; +extern u8 D_8018EA40; +extern u8 D_8018EAF4; +extern u8 D_8018EAD0; +extern u8 D_8018EAAC; +extern u8 D_8018EA1C; +extern void func_80145934(void); +extern u8 D_8018EBA8; +extern u8 D_8018EB84; +extern u8 D_8018EB60; +extern u8 D_8018EB3C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018DFA0[]; +extern unsigned char D_8018DFD0[]; +extern unsigned char D_8018E020[]; +extern unsigned char D_8018E050[]; +extern unsigned char D_8018E080[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018E0D0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018E198[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018E220[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018E228; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801F61D8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801F61DC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018E258; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018E300[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018E324[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018E314; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018E338[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018E344[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018E354[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018E36C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018E35C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018E380[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018E39C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018E38C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018E3B0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018E3C4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018E3D8; +extern void (*D_8018E400[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018E3E0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018E40C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018E44C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018E450[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018E644[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018E8B4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018E8C4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801F6210; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018E8EC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018E8CC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018E8DC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018E92C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018E934[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018E900; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018E940[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018E910; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801F6218; +extern s32 D_801F6224; +extern s32 D_801F6228; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018E97C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801F6218; +extern int D_801F6224; +extern int D_801F6228; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018E980[])(void); + extern int D_801F621C; + extern int D_801F6220; + short sVar1; + + D_8018E980[*(unsigned short *)(param_1 + 2)](); + switch (D_801F6218) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801F6220 = 0; + D_801F621C = 0x46; + D_801F6218 += 1; + break; + case 2: + if (D_801F621C == 0) { + if (SsGetMute() == 0) { + D_801F6218 += 1; + } + } else { + D_801F621C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801F6218 += 1; + } + break; + case 4: + D_801F6224 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801F621C = 0xd2; + } else { + D_801F621C = 1; + } + break; + case 5: + D_801F621C -= 1; + if (D_801F621C == -1 || D_801F6228 != 0) { + D_801F621C = 0; + D_801F6218 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801F621C = 0x28; + D_801F6218 += 1; + break; + case 7: + if (D_801F621C == 0) { + if (SsGetMute() == 0) { + D_801F6218 += 1; + } + } else { + D_801F621C -= 1; + } + break; + case 8: + D_801F6220 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801F6218; + +void func_80158BB0(void *arg0) { + if (D_801F6218 == 0) { + D_801F6218 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801F6224; +extern s32 D_8018E950[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801F6224; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018E950[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801F6228; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801F6228 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801F6218; +extern s32 D_801F6220; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801F6218 == 4) { + D_801F6218 = 5; + } + if (D_801F6220 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018E9B8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018E9B8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_801588CC", func_801594E8); + + +extern void (*D_8018EBCC[])(void); + +void func_80159698(void *a0) { + D_8018EBCC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018E9EC)); + func_80028620(1, &(*(u8 *)&D_8018E9EC) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018E9EC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018EC70[])(void); + +void func_80159968(void *a0) { + D_8018EC70[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018EDC4[])(void); + +void func_80159B70(void *a0) { + D_8018EDC4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018EBE0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018EBE0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_007/ov_SC03_007_jr_80154C24.c b/src/ov_SC03_007/ov_SC03_007_jr_80154C24.c index 294f058d7..a09e13b0a 100644 --- a/src/ov_SC03_007/ov_SC03_007_jr_80154C24.c +++ b/src/ov_SC03_007/ov_SC03_007_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80189774[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E8B70; - -void func_80158BB0(void *arg0) { - if (D_801E8B70 == 0) { - D_801E8B70 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E8B7C; -extern s32 D_80189748[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E8B7C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80189748[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E8B80; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E8B80 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E8B70; -extern s32 D_801E8B78; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E8B70 == 4) { - D_801E8B70 = 5; - } - if (D_801E8B78 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801897B0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801897B0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_80154C24", func_801594E8); - - -extern void (*D_801899C4[])(void); - -void func_80159698(void *a0) { - D_801899C4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801897E4)); - func_80028620(1, &(*(u8 *)&D_801897E4) + 0x10); - func_80028620(2, &(*(u8 *)&D_801897E4) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80189A68[])(void); - -void func_80159968(void *a0) { - D_80189A68[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80189BBC[])(void); - -void func_80159B70(void *a0) { - D_80189BBC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801899D8; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801899D8); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_007/ov_SC03_007_jr_801588CC.c b/src/ov_SC03_007/ov_SC03_007_jr_801588CC.c new file mode 100644 index 000000000..9b5c70791 --- /dev/null +++ b/src/ov_SC03_007/ov_SC03_007_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80189910; +extern u8 D_80189880; +extern u8 D_8018985C; +extern u8 D_80189838; +extern u8 D_801898EC; +extern u8 D_801898C8; +extern u8 D_801898A4; +extern u8 D_80189814; +extern void func_80145934(void); +extern u8 D_801899A0; +extern u8 D_8018997C; +extern u8 D_80189958; +extern u8 D_80189934; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80188D98[]; +extern unsigned char D_80188DC8[]; +extern unsigned char D_80188E18[]; +extern unsigned char D_80188E48[]; +extern unsigned char D_80188E78[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80188EC8[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80188F90[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80189018[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80189020; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E8B30; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E8B34; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80189050; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801890F8[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018911C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018910C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80189130[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018913C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018914C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80189164[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80189154; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80189178[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80189194[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80189184; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801891A8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801891BC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801891D0; +extern void (*D_801891F8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801891D8; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80189204[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80189244[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80189248[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018943C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801896AC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801896BC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E8B68; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801896E4[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801896C4; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801896D4; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80189724[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018972C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801896F8; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80189738[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80189708; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E8B70; +extern s32 D_801E8B7C; +extern s32 D_801E8B80; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80189774[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801E8B70; +extern int D_801E8B7C; +extern int D_801E8B80; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80189778[])(void); + extern int D_801E8B74; + extern int D_801E8B78; + short sVar1; + + D_80189778[*(unsigned short *)(param_1 + 2)](); + switch (D_801E8B70) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801E8B78 = 0; + D_801E8B74 = 0x46; + D_801E8B70 += 1; + break; + case 2: + if (D_801E8B74 == 0) { + if (SsGetMute() == 0) { + D_801E8B70 += 1; + } + } else { + D_801E8B74 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801E8B70 += 1; + } + break; + case 4: + D_801E8B7C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801E8B74 = 0xd2; + } else { + D_801E8B74 = 1; + } + break; + case 5: + D_801E8B74 -= 1; + if (D_801E8B74 == -1 || D_801E8B80 != 0) { + D_801E8B74 = 0; + D_801E8B70 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801E8B74 = 0x28; + D_801E8B70 += 1; + break; + case 7: + if (D_801E8B74 == 0) { + if (SsGetMute() == 0) { + D_801E8B70 += 1; + } + } else { + D_801E8B74 -= 1; + } + break; + case 8: + D_801E8B78 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801E8B70; + +void func_80158BB0(void *arg0) { + if (D_801E8B70 == 0) { + D_801E8B70 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801E8B7C; +extern s32 D_80189748[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801E8B7C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80189748[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801E8B80; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801E8B80 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801E8B70; +extern s32 D_801E8B78; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801E8B70 == 4) { + D_801E8B70 = 5; + } + if (D_801E8B78 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801897B0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801897B0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_801588CC", func_801594E8); + + +extern void (*D_801899C4[])(void); + +void func_80159698(void *a0) { + D_801899C4[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801897E4)); + func_80028620(1, &(*(u8 *)&D_801897E4) + 0x10); + func_80028620(2, &(*(u8 *)&D_801897E4) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80189A68[])(void); + +void func_80159968(void *a0) { + D_80189A68[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80189BBC[])(void); + +void func_80159B70(void *a0) { + D_80189BBC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801899D8; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801899D8); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_010/ov_SC03_010_jr_80154C24.c b/src/ov_SC03_010/ov_SC03_010_jr_80154C24.c index 224a2f868..c7fc0f8e6 100644 --- a/src/ov_SC03_010/ov_SC03_010_jr_80154C24.c +++ b/src/ov_SC03_010/ov_SC03_010_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80182294[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019EDD0; - -void func_80158BB0(void *arg0) { - if (D_8019EDD0 == 0) { - D_8019EDD0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019EDDC; -extern s32 D_80182268[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019EDDC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80182268[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019EDE0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019EDE0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019EDD0; -extern s32 D_8019EDD8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019EDD0 == 4) { - D_8019EDD0 = 5; - } - if (D_8019EDD8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801822D0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801822D0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_80154C24", func_801594E8); - - -extern void (*D_801824E4[])(void); - -void func_80159698(void *a0) { - D_801824E4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80182304)); - func_80028620(1, &(*(u8 *)&D_80182304) + 0x10); - func_80028620(2, &(*(u8 *)&D_80182304) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80182588[])(void); - -void func_80159968(void *a0) { - D_80182588[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801826DC[])(void); - -void func_80159B70(void *a0) { - D_801826DC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801824F8; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801824F8); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_010/ov_SC03_010_jr_801588CC.c b/src/ov_SC03_010/ov_SC03_010_jr_801588CC.c new file mode 100644 index 000000000..1f44550d9 --- /dev/null +++ b/src/ov_SC03_010/ov_SC03_010_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80182430; +extern u8 D_801823A0; +extern u8 D_8018237C; +extern u8 D_80182358; +extern u8 D_8018240C; +extern u8 D_801823E8; +extern u8 D_801823C4; +extern u8 D_80182334; +extern void func_80145934(void); +extern u8 D_801824C0; +extern u8 D_8018249C; +extern u8 D_80182478; +extern u8 D_80182454; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801818B8[]; +extern unsigned char D_801818E8[]; +extern unsigned char D_80181938[]; +extern unsigned char D_80181968[]; +extern unsigned char D_80181998[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801819E8[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80181AB0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80181B38[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80181B40; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019ED90; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019ED94; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80181B70; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80181C18[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80181C3C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80181C2C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80181C50[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80181C5C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80181C6C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80181C84[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181C74; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80181C98[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80181CB4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181CA4; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80181CC8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80181CDC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80181CF0; +extern void (*D_80181D18[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181CF8; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80181D24[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80181D64[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80181D68[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80181F5C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801821CC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801821DC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019EDC8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182204[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801821E4; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801821F4; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80182244[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018224C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182218; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80182258[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80182228; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019EDD0; +extern s32 D_8019EDDC; +extern s32 D_8019EDE0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80182294[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019EDD0; +extern int D_8019EDDC; +extern int D_8019EDE0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80182298[])(void); + extern int D_8019EDD4; + extern int D_8019EDD8; + short sVar1; + + D_80182298[*(unsigned short *)(param_1 + 2)](); + switch (D_8019EDD0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019EDD8 = 0; + D_8019EDD4 = 0x46; + D_8019EDD0 += 1; + break; + case 2: + if (D_8019EDD4 == 0) { + if (SsGetMute() == 0) { + D_8019EDD0 += 1; + } + } else { + D_8019EDD4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019EDD0 += 1; + } + break; + case 4: + D_8019EDDC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019EDD4 = 0xd2; + } else { + D_8019EDD4 = 1; + } + break; + case 5: + D_8019EDD4 -= 1; + if (D_8019EDD4 == -1 || D_8019EDE0 != 0) { + D_8019EDD4 = 0; + D_8019EDD0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019EDD4 = 0x28; + D_8019EDD0 += 1; + break; + case 7: + if (D_8019EDD4 == 0) { + if (SsGetMute() == 0) { + D_8019EDD0 += 1; + } + } else { + D_8019EDD4 -= 1; + } + break; + case 8: + D_8019EDD8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019EDD0; + +void func_80158BB0(void *arg0) { + if (D_8019EDD0 == 0) { + D_8019EDD0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019EDDC; +extern s32 D_80182268[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019EDDC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80182268[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019EDE0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019EDE0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019EDD0; +extern s32 D_8019EDD8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019EDD0 == 4) { + D_8019EDD0 = 5; + } + if (D_8019EDD8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801822D0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801822D0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_801588CC", func_801594E8); + + +extern void (*D_801824E4[])(void); + +void func_80159698(void *a0) { + D_801824E4[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80182304)); + func_80028620(1, &(*(u8 *)&D_80182304) + 0x10); + func_80028620(2, &(*(u8 *)&D_80182304) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80182588[])(void); + +void func_80159968(void *a0) { + D_80182588[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801826DC[])(void); + +void func_80159B70(void *a0) { + D_801826DC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801824F8; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801824F8); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_011/ov_SC03_011_jr_80154C24.c b/src/ov_SC03_011/ov_SC03_011_jr_80154C24.c index 9b443a09d..a7cdcaa28 100644 --- a/src/ov_SC03_011/ov_SC03_011_jr_80154C24.c +++ b/src/ov_SC03_011/ov_SC03_011_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80183604[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A1068; - -void func_80158BB0(void *arg0) { - if (D_801A1068 == 0) { - D_801A1068 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A1074; -extern s32 D_801835D8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A1074; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801835D8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A1078; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A1078 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A1068; -extern s32 D_801A1070; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A1068 == 4) { - D_801A1068 = 5; - } - if (D_801A1070 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80183640[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80183640; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_80154C24", func_801594E8); - - -extern void (*D_80183854[])(void); - -void func_80159698(void *a0) { - D_80183854[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80183674)); - func_80028620(1, &(*(u8 *)&D_80183674) + 0x10); - func_80028620(2, &(*(u8 *)&D_80183674) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801838F8[])(void); - -void func_80159968(void *a0) { - D_801838F8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80183A4C[])(void); - -void func_80159B70(void *a0) { - D_80183A4C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80183868; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80183868); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_011/ov_SC03_011_jr_801588CC.c b/src/ov_SC03_011/ov_SC03_011_jr_801588CC.c new file mode 100644 index 000000000..55f7de434 --- /dev/null +++ b/src/ov_SC03_011/ov_SC03_011_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801837A0; +extern u8 D_80183710; +extern u8 D_801836EC; +extern u8 D_801836C8; +extern u8 D_8018377C; +extern u8 D_80183758; +extern u8 D_80183734; +extern u8 D_801836A4; +extern void func_80145934(void); +extern u8 D_80183830; +extern u8 D_8018380C; +extern u8 D_801837E8; +extern u8 D_801837C4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80182C28[]; +extern unsigned char D_80182C58[]; +extern unsigned char D_80182CA8[]; +extern unsigned char D_80182CD8[]; +extern unsigned char D_80182D08[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80182D58[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80182E20[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80182EA8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80182EB0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A1028; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A102C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80182EE0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80182F88[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80182FAC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80182F9C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80182FC0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80182FCC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80182FDC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80182FF4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80182FE4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80183008[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80183024[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183014; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80183038[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018304C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80183060; +extern void (*D_80183088[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183068; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80183094[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801830D4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801830D8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801832CC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018353C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018354C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A1060; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80183574[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80183554; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80183564; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801835B4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801835BC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80183588; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801835C8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80183598; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A1068; +extern s32 D_801A1074; +extern s32 D_801A1078; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80183604[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A1068; +extern int D_801A1074; +extern int D_801A1078; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80183608[])(void); + extern int D_801A106C; + extern int D_801A1070; + short sVar1; + + D_80183608[*(unsigned short *)(param_1 + 2)](); + switch (D_801A1068) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A1070 = 0; + D_801A106C = 0x46; + D_801A1068 += 1; + break; + case 2: + if (D_801A106C == 0) { + if (SsGetMute() == 0) { + D_801A1068 += 1; + } + } else { + D_801A106C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A1068 += 1; + } + break; + case 4: + D_801A1074 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A106C = 0xd2; + } else { + D_801A106C = 1; + } + break; + case 5: + D_801A106C -= 1; + if (D_801A106C == -1 || D_801A1078 != 0) { + D_801A106C = 0; + D_801A1068 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A106C = 0x28; + D_801A1068 += 1; + break; + case 7: + if (D_801A106C == 0) { + if (SsGetMute() == 0) { + D_801A1068 += 1; + } + } else { + D_801A106C -= 1; + } + break; + case 8: + D_801A1070 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A1068; + +void func_80158BB0(void *arg0) { + if (D_801A1068 == 0) { + D_801A1068 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A1074; +extern s32 D_801835D8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A1074; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801835D8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A1078; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A1078 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A1068; +extern s32 D_801A1070; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A1068 == 4) { + D_801A1068 = 5; + } + if (D_801A1070 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80183640[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80183640; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_801588CC", func_801594E8); + + +extern void (*D_80183854[])(void); + +void func_80159698(void *a0) { + D_80183854[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80183674)); + func_80028620(1, &(*(u8 *)&D_80183674) + 0x10); + func_80028620(2, &(*(u8 *)&D_80183674) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801838F8[])(void); + +void func_80159968(void *a0) { + D_801838F8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80183A4C[])(void); + +void func_80159B70(void *a0) { + D_80183A4C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80183868; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80183868); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_012/ov_SC03_012_jr_80154C24.c b/src/ov_SC03_012/ov_SC03_012_jr_80154C24.c index b8b23f64c..07d77e138 100644 --- a/src/ov_SC03_012/ov_SC03_012_jr_80154C24.c +++ b/src/ov_SC03_012/ov_SC03_012_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801804E4[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_80193E88; - -void func_80158BB0(void *arg0) { - if (D_80193E88 == 0) { - D_80193E88 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_80193E94; -extern s32 D_801804B8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_80193E94; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801804B8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80193E98; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80193E98 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_80193E88; -extern s32 D_80193E90; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_80193E88 == 4) { - D_80193E88 = 5; - } - if (D_80193E90 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80180520[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80180520; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_80154C24", func_801594E8); - - -extern void (*D_80180734[])(void); - -void func_80159698(void *a0) { - D_80180734[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180554)); - func_80028620(1, &(*(u8 *)&D_80180554) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180554) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801807D8[])(void); - -void func_80159968(void *a0) { - D_801807D8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018092C[])(void); - -void func_80159B70(void *a0) { - D_8018092C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80180748; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80180748); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_012/ov_SC03_012_jr_801588CC.c b/src/ov_SC03_012/ov_SC03_012_jr_801588CC.c new file mode 100644 index 000000000..7eeb827c4 --- /dev/null +++ b/src/ov_SC03_012/ov_SC03_012_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80180680; +extern u8 D_801805F0; +extern u8 D_801805CC; +extern u8 D_801805A8; +extern u8 D_8018065C; +extern u8 D_80180638; +extern u8 D_80180614; +extern u8 D_80180584; +extern void func_80145934(void); +extern u8 D_80180710; +extern u8 D_801806EC; +extern u8 D_801806C8; +extern u8 D_801806A4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8017FB08[]; +extern unsigned char D_8017FB38[]; +extern unsigned char D_8017FB88[]; +extern unsigned char D_8017FBB8[]; +extern unsigned char D_8017FBE8[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8017FC38[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8017FD00[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8017FD88[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8017FD90; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_80193E48; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_80193E4C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8017FDC0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8017FE68[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8017FE8C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8017FE7C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8017FEA0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8017FEAC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8017FEBC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8017FED4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FEC4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8017FEE8[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8017FF04[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FEF4; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8017FF18[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8017FF2C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8017FF40; +extern void (*D_8017FF68[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017FF48; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8017FF74[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8017FFB4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8017FFB8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801801AC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018041C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018042C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_80193E80; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180454[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180434; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180444; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180494[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018049C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180468; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801804A8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180478; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_80193E88; +extern s32 D_80193E94; +extern s32 D_80193E98; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801804E4[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_80193E88; +extern int D_80193E94; +extern int D_80193E98; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801804E8[])(void); + extern int D_80193E8C; + extern int D_80193E90; + short sVar1; + + D_801804E8[*(unsigned short *)(param_1 + 2)](); + switch (D_80193E88) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80193E90 = 0; + D_80193E8C = 0x46; + D_80193E88 += 1; + break; + case 2: + if (D_80193E8C == 0) { + if (SsGetMute() == 0) { + D_80193E88 += 1; + } + } else { + D_80193E8C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_80193E88 += 1; + } + break; + case 4: + D_80193E94 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_80193E8C = 0xd2; + } else { + D_80193E8C = 1; + } + break; + case 5: + D_80193E8C -= 1; + if (D_80193E8C == -1 || D_80193E98 != 0) { + D_80193E8C = 0; + D_80193E88 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_80193E8C = 0x28; + D_80193E88 += 1; + break; + case 7: + if (D_80193E8C == 0) { + if (SsGetMute() == 0) { + D_80193E88 += 1; + } + } else { + D_80193E8C -= 1; + } + break; + case 8: + D_80193E90 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_80193E88; + +void func_80158BB0(void *arg0) { + if (D_80193E88 == 0) { + D_80193E88 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_80193E94; +extern s32 D_801804B8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_80193E94; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801804B8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80193E98; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80193E98 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_80193E88; +extern s32 D_80193E90; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_80193E88 == 4) { + D_80193E88 = 5; + } + if (D_80193E90 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80180520[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80180520; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_801588CC", func_801594E8); + + +extern void (*D_80180734[])(void); + +void func_80159698(void *a0) { + D_80180734[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180554)); + func_80028620(1, &(*(u8 *)&D_80180554) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180554) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801807D8[])(void); + +void func_80159968(void *a0) { + D_801807D8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018092C[])(void); + +void func_80159B70(void *a0) { + D_8018092C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80180748; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80180748); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_013/ov_SC03_013_jr_80154C24.c b/src/ov_SC03_013/ov_SC03_013_jr_80154C24.c index 00322c480..fc4af9e5f 100644 --- a/src/ov_SC03_013/ov_SC03_013_jr_80154C24.c +++ b/src/ov_SC03_013/ov_SC03_013_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801832CC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801AC158; - -void func_80158BB0(void *arg0) { - if (D_801AC158 == 0) { - D_801AC158 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801AC164; -extern s32 D_801832A0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801AC164; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801832A0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801AC168; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801AC168 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801AC158; -extern s32 D_801AC160; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801AC158 == 4) { - D_801AC158 = 5; - } - if (D_801AC160 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80183308[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80183308; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_80154C24", func_801594E8); - - -extern void (*D_8018351C[])(void); - -void func_80159698(void *a0) { - D_8018351C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018333C)); - func_80028620(1, &(*(u8 *)&D_8018333C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018333C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801835C0[])(void); - -void func_80159968(void *a0) { - D_801835C0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80183714[])(void); - -void func_80159B70(void *a0) { - D_80183714[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80183530; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80183530); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_013/ov_SC03_013_jr_801588CC.c b/src/ov_SC03_013/ov_SC03_013_jr_801588CC.c new file mode 100644 index 000000000..13f04c8c9 --- /dev/null +++ b/src/ov_SC03_013/ov_SC03_013_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80183468; +extern u8 D_801833D8; +extern u8 D_801833B4; +extern u8 D_80183390; +extern u8 D_80183444; +extern u8 D_80183420; +extern u8 D_801833FC; +extern u8 D_8018336C; +extern void func_80145934(void); +extern u8 D_801834F8; +extern u8 D_801834D4; +extern u8 D_801834B0; +extern u8 D_8018348C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801828F0[]; +extern unsigned char D_80182920[]; +extern unsigned char D_80182970[]; +extern unsigned char D_801829A0[]; +extern unsigned char D_801829D0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80182A20[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80182AE8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80182B70[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80182B78; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801AC118; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801AC11C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80182BA8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80182C50[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80182C74[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80182C64; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80182C88[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80182C94[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80182CA4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80182CBC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80182CAC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80182CD0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80182CEC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80182CDC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80182D00[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80182D14[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80182D28; +extern void (*D_80182D50[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80182D30; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80182D5C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80182D9C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80182DA0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80182F94[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80183204[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80183214[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801AC150; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018323C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018321C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018322C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018327C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80183284[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80183250; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80183290[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80183260; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801AC158; +extern s32 D_801AC164; +extern s32 D_801AC168; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801832CC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801AC158; +extern int D_801AC164; +extern int D_801AC168; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801832D0[])(void); + extern int D_801AC15C; + extern int D_801AC160; + short sVar1; + + D_801832D0[*(unsigned short *)(param_1 + 2)](); + switch (D_801AC158) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801AC160 = 0; + D_801AC15C = 0x46; + D_801AC158 += 1; + break; + case 2: + if (D_801AC15C == 0) { + if (SsGetMute() == 0) { + D_801AC158 += 1; + } + } else { + D_801AC15C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801AC158 += 1; + } + break; + case 4: + D_801AC164 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801AC15C = 0xd2; + } else { + D_801AC15C = 1; + } + break; + case 5: + D_801AC15C -= 1; + if (D_801AC15C == -1 || D_801AC168 != 0) { + D_801AC15C = 0; + D_801AC158 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801AC15C = 0x28; + D_801AC158 += 1; + break; + case 7: + if (D_801AC15C == 0) { + if (SsGetMute() == 0) { + D_801AC158 += 1; + } + } else { + D_801AC15C -= 1; + } + break; + case 8: + D_801AC160 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801AC158; + +void func_80158BB0(void *arg0) { + if (D_801AC158 == 0) { + D_801AC158 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801AC164; +extern s32 D_801832A0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801AC164; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801832A0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801AC168; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801AC168 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801AC158; +extern s32 D_801AC160; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801AC158 == 4) { + D_801AC158 = 5; + } + if (D_801AC160 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80183308[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80183308; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_801588CC", func_801594E8); + + +extern void (*D_8018351C[])(void); + +void func_80159698(void *a0) { + D_8018351C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018333C)); + func_80028620(1, &(*(u8 *)&D_8018333C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018333C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801835C0[])(void); + +void func_80159968(void *a0) { + D_801835C0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80183714[])(void); + +void func_80159B70(void *a0) { + D_80183714[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80183530; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80183530); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_014/ov_SC03_014_jr_80154C24.c b/src/ov_SC03_014/ov_SC03_014_jr_80154C24.c index a9c6135f7..ea2afd54f 100644 --- a/src/ov_SC03_014/ov_SC03_014_jr_80154C24.c +++ b/src/ov_SC03_014/ov_SC03_014_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018D908[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E96D8; - -void func_80158BB0(void *arg0) { - if (D_801E96D8 == 0) { - D_801E96D8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E96E4; -extern s32 D_8018D8DC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E96E4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018D8DC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E96E8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E96E8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96D8; -extern s32 D_801E96E0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E96D8 == 4) { - D_801E96D8 = 5; - } - if (D_801E96E0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018D944[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018D944; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_80154C24", func_801594E8); - - -extern void (*D_8018DB58[])(void); - -void func_80159698(void *a0) { - D_8018DB58[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018D978)); - func_80028620(1, &(*(u8 *)&D_8018D978) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018D978) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018DBFC[])(void); - -void func_80159968(void *a0) { - D_8018DBFC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018DD50[])(void); - -void func_80159B70(void *a0) { - D_8018DD50[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018DB6C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018DB6C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_014/ov_SC03_014_jr_801588CC.c b/src/ov_SC03_014/ov_SC03_014_jr_801588CC.c new file mode 100644 index 000000000..807bb367f --- /dev/null +++ b/src/ov_SC03_014/ov_SC03_014_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018DAA4; +extern u8 D_8018DA14; +extern u8 D_8018D9F0; +extern u8 D_8018D9CC; +extern u8 D_8018DA80; +extern u8 D_8018DA5C; +extern u8 D_8018DA38; +extern u8 D_8018D9A8; +extern void func_80145934(void); +extern u8 D_8018DB34; +extern u8 D_8018DB10; +extern u8 D_8018DAEC; +extern u8 D_8018DAC8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018CF2C[]; +extern unsigned char D_8018CF5C[]; +extern unsigned char D_8018CFAC[]; +extern unsigned char D_8018CFDC[]; +extern unsigned char D_8018D00C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018D05C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018D124[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018D1AC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018D1B4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E9698; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E969C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018D1E4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018D28C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018D2B0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018D2A0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018D2C4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018D2D0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018D2E0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018D2F8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D2E8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018D30C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018D328[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D318; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018D33C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018D350[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018D364; +extern void (*D_8018D38C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D36C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018D398[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018D3D8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018D3DC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018D5D0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018D840[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018D850[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E96D0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018D878[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018D858; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018D868; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018D8B8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018D8C0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018D88C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018D8CC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018D89C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E96D8; +extern s32 D_801E96E4; +extern s32 D_801E96E8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018D908[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801E96D8; +extern int D_801E96E4; +extern int D_801E96E8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018D90C[])(void); + extern int D_801E96DC; + extern int D_801E96E0; + short sVar1; + + D_8018D90C[*(unsigned short *)(param_1 + 2)](); + switch (D_801E96D8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801E96E0 = 0; + D_801E96DC = 0x46; + D_801E96D8 += 1; + break; + case 2: + if (D_801E96DC == 0) { + if (SsGetMute() == 0) { + D_801E96D8 += 1; + } + } else { + D_801E96DC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801E96D8 += 1; + } + break; + case 4: + D_801E96E4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801E96DC = 0xd2; + } else { + D_801E96DC = 1; + } + break; + case 5: + D_801E96DC -= 1; + if (D_801E96DC == -1 || D_801E96E8 != 0) { + D_801E96DC = 0; + D_801E96D8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801E96DC = 0x28; + D_801E96D8 += 1; + break; + case 7: + if (D_801E96DC == 0) { + if (SsGetMute() == 0) { + D_801E96D8 += 1; + } + } else { + D_801E96DC -= 1; + } + break; + case 8: + D_801E96E0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801E96D8; + +void func_80158BB0(void *arg0) { + if (D_801E96D8 == 0) { + D_801E96D8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801E96E4; +extern s32 D_8018D8DC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801E96E4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018D8DC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801E96E8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801E96E8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801E96D8; +extern s32 D_801E96E0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801E96D8 == 4) { + D_801E96D8 = 5; + } + if (D_801E96E0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018D944[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018D944; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_801588CC", func_801594E8); + + +extern void (*D_8018DB58[])(void); + +void func_80159698(void *a0) { + D_8018DB58[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018D978)); + func_80028620(1, &(*(u8 *)&D_8018D978) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018D978) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018DBFC[])(void); + +void func_80159968(void *a0) { + D_8018DBFC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018DD50[])(void); + +void func_80159B70(void *a0) { + D_8018DD50[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018DB6C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018DB6C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80154C24.c b/src/ov_SC03_015/ov_SC03_015_jr_80154C24.c index 70646b62e..241f0376b 100644 --- a/src/ov_SC03_015/ov_SC03_015_jr_80154C24.c +++ b/src/ov_SC03_015/ov_SC03_015_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018D908[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E96D8; - -void func_80158BB0(void *arg0) { - if (D_801E96D8 == 0) { - D_801E96D8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E96E4; -extern s32 D_8018D8DC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E96E4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018D8DC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E96E8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E96E8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96D8; -extern s32 D_801E96E0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E96D8 == 4) { - D_801E96D8 = 5; - } - if (D_801E96E0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018D944[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018D944; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_80154C24", func_801594E8); - - -extern void (*D_8018DB58[])(void); - -void func_80159698(void *a0) { - D_8018DB58[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018D978)); - func_80028620(1, &(*(u8 *)&D_8018D978) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018D978) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018DBFC[])(void); - -void func_80159968(void *a0) { - D_8018DBFC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018DD50[])(void); - -void func_80159B70(void *a0) { - D_8018DD50[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018DB6C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018DB6C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_801588CC.c b/src/ov_SC03_015/ov_SC03_015_jr_801588CC.c new file mode 100644 index 000000000..7ab78ea1d --- /dev/null +++ b/src/ov_SC03_015/ov_SC03_015_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018DAA4; +extern u8 D_8018DA14; +extern u8 D_8018D9F0; +extern u8 D_8018D9CC; +extern u8 D_8018DA80; +extern u8 D_8018DA5C; +extern u8 D_8018DA38; +extern u8 D_8018D9A8; +extern void func_80145934(void); +extern u8 D_8018DB34; +extern u8 D_8018DB10; +extern u8 D_8018DAEC; +extern u8 D_8018DAC8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018CF2C[]; +extern unsigned char D_8018CF5C[]; +extern unsigned char D_8018CFAC[]; +extern unsigned char D_8018CFDC[]; +extern unsigned char D_8018D00C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018D05C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018D124[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018D1AC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018D1B4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E9698; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E969C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018D1E4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018D28C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018D2B0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018D2A0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018D2C4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018D2D0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018D2E0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018D2F8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D2E8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018D30C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018D328[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D318; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018D33C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018D350[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018D364; +extern void (*D_8018D38C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D36C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018D398[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018D3D8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018D3DC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018D5D0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018D840[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018D850[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E96D0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018D878[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018D858; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018D868; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018D8B8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018D8C0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018D88C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018D8CC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018D89C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E96D8; +extern s32 D_801E96E4; +extern s32 D_801E96E8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018D908[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801E96D8; +extern int D_801E96E4; +extern int D_801E96E8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018D90C[])(void); + extern int D_801E96DC; + extern int D_801E96E0; + short sVar1; + + D_8018D90C[*(unsigned short *)(param_1 + 2)](); + switch (D_801E96D8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801E96E0 = 0; + D_801E96DC = 0x46; + D_801E96D8 += 1; + break; + case 2: + if (D_801E96DC == 0) { + if (SsGetMute() == 0) { + D_801E96D8 += 1; + } + } else { + D_801E96DC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801E96D8 += 1; + } + break; + case 4: + D_801E96E4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801E96DC = 0xd2; + } else { + D_801E96DC = 1; + } + break; + case 5: + D_801E96DC -= 1; + if (D_801E96DC == -1 || D_801E96E8 != 0) { + D_801E96DC = 0; + D_801E96D8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801E96DC = 0x28; + D_801E96D8 += 1; + break; + case 7: + if (D_801E96DC == 0) { + if (SsGetMute() == 0) { + D_801E96D8 += 1; + } + } else { + D_801E96DC -= 1; + } + break; + case 8: + D_801E96E0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801E96D8; + +void func_80158BB0(void *arg0) { + if (D_801E96D8 == 0) { + D_801E96D8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801E96E4; +extern s32 D_8018D8DC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801E96E4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018D8DC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801E96E8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801E96E8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801E96D8; +extern s32 D_801E96E0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801E96D8 == 4) { + D_801E96D8 = 5; + } + if (D_801E96E0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018D944[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018D944; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_801588CC", func_801594E8); + + +extern void (*D_8018DB58[])(void); + +void func_80159698(void *a0) { + D_8018DB58[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018D978)); + func_80028620(1, &(*(u8 *)&D_8018D978) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018D978) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018DBFC[])(void); + +void func_80159968(void *a0) { + D_8018DBFC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018DD50[])(void); + +void func_80159B70(void *a0) { + D_8018DD50[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018DB6C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018DB6C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_023/ov_SC03_023_jr_80154C24.c b/src/ov_SC03_023/ov_SC03_023_jr_80154C24.c index c6953d4cc..8736bf6e8 100644 --- a/src/ov_SC03_023/ov_SC03_023_jr_80154C24.c +++ b/src/ov_SC03_023/ov_SC03_023_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80181284[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_80197AB0; - -void func_80158BB0(void *arg0) { - if (D_80197AB0 == 0) { - D_80197AB0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_80197ABC; -extern s32 D_80181258[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_80197ABC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80181258[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80197AC0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80197AC0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_80197AB0; -extern s32 D_80197AB8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_80197AB0 == 4) { - D_80197AB0 = 5; - } - if (D_80197AB8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801812C0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801812C0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_80154C24", func_801594E8); - - -extern void (*D_801814D4[])(void); - -void func_80159698(void *a0) { - D_801814D4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801812F4)); - func_80028620(1, &(*(u8 *)&D_801812F4) + 0x10); - func_80028620(2, &(*(u8 *)&D_801812F4) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80181578[])(void); - -void func_80159968(void *a0) { - D_80181578[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801816CC[])(void); - -void func_80159B70(void *a0) { - D_801816CC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801814E8; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801814E8); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_023/ov_SC03_023_jr_801588CC.c b/src/ov_SC03_023/ov_SC03_023_jr_801588CC.c new file mode 100644 index 000000000..f1ceca597 --- /dev/null +++ b/src/ov_SC03_023/ov_SC03_023_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80181420; +extern u8 D_80181390; +extern u8 D_8018136C; +extern u8 D_80181348; +extern u8 D_801813FC; +extern u8 D_801813D8; +extern u8 D_801813B4; +extern u8 D_80181324; +extern void func_80145934(void); +extern u8 D_801814B0; +extern u8 D_8018148C; +extern u8 D_80181468; +extern u8 D_80181444; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801808A8[]; +extern unsigned char D_801808D8[]; +extern unsigned char D_80180928[]; +extern unsigned char D_80180958[]; +extern unsigned char D_80180988[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801809D8[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80180AA0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180B28[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180B30; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_80197A70; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_80197A74; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180B60; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80180C08[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180C2C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80180C1C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80180C40[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80180C4C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80180C5C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80180C74[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180C64; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80180C88[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80180CA4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180C94; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80180CB8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80180CCC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80180CE0; +extern void (*D_80180D08[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180CE8; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80180D14[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80180D54[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80180D58[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80180F4C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801811BC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801811CC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_80197AA8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801811F4[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801811D4; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801811E4; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80181234[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018123C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181208; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80181248[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80181218; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_80197AB0; +extern s32 D_80197ABC; +extern s32 D_80197AC0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181284[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_80197AB0; +extern int D_80197ABC; +extern int D_80197AC0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80181288[])(void); + extern int D_80197AB4; + extern int D_80197AB8; + short sVar1; + + D_80181288[*(unsigned short *)(param_1 + 2)](); + switch (D_80197AB0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80197AB8 = 0; + D_80197AB4 = 0x46; + D_80197AB0 += 1; + break; + case 2: + if (D_80197AB4 == 0) { + if (SsGetMute() == 0) { + D_80197AB0 += 1; + } + } else { + D_80197AB4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_80197AB0 += 1; + } + break; + case 4: + D_80197ABC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_80197AB4 = 0xd2; + } else { + D_80197AB4 = 1; + } + break; + case 5: + D_80197AB4 -= 1; + if (D_80197AB4 == -1 || D_80197AC0 != 0) { + D_80197AB4 = 0; + D_80197AB0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_80197AB4 = 0x28; + D_80197AB0 += 1; + break; + case 7: + if (D_80197AB4 == 0) { + if (SsGetMute() == 0) { + D_80197AB0 += 1; + } + } else { + D_80197AB4 -= 1; + } + break; + case 8: + D_80197AB8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_80197AB0; + +void func_80158BB0(void *arg0) { + if (D_80197AB0 == 0) { + D_80197AB0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_80197ABC; +extern s32 D_80181258[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_80197ABC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80181258[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80197AC0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80197AC0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_80197AB0; +extern s32 D_80197AB8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_80197AB0 == 4) { + D_80197AB0 = 5; + } + if (D_80197AB8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801812C0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801812C0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_801588CC", func_801594E8); + + +extern void (*D_801814D4[])(void); + +void func_80159698(void *a0) { + D_801814D4[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801812F4)); + func_80028620(1, &(*(u8 *)&D_801812F4) + 0x10); + func_80028620(2, &(*(u8 *)&D_801812F4) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80181578[])(void); + +void func_80159968(void *a0) { + D_80181578[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801816CC[])(void); + +void func_80159B70(void *a0) { + D_801816CC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801814E8; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801814E8); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_024/ov_SC03_024_jr_80154C24.c b/src/ov_SC03_024/ov_SC03_024_jr_80154C24.c index 952844052..db500a247 100644 --- a/src/ov_SC03_024/ov_SC03_024_jr_80154C24.c +++ b/src/ov_SC03_024/ov_SC03_024_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801892A8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801C0048; - -void func_80158BB0(void *arg0) { - if (D_801C0048 == 0) { - D_801C0048 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801C0054; -extern s32 D_8018927C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C0054; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018927C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801C0058; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C0058 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801C0048; -extern s32 D_801C0050; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801C0048 == 4) { - D_801C0048 = 5; - } - if (D_801C0050 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801892E4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801892E4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_80154C24", func_801594E8); - - -extern void (*D_801894F8[])(void); - -void func_80159698(void *a0) { - D_801894F8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80189318)); - func_80028620(1, &(*(u8 *)&D_80189318) + 0x10); - func_80028620(2, &(*(u8 *)&D_80189318) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018959C[])(void); - -void func_80159968(void *a0) { - D_8018959C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801896F0[])(void); - -void func_80159B70(void *a0) { - D_801896F0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018950C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018950C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_024/ov_SC03_024_jr_801588CC.c b/src/ov_SC03_024/ov_SC03_024_jr_801588CC.c new file mode 100644 index 000000000..16550f4e4 --- /dev/null +++ b/src/ov_SC03_024/ov_SC03_024_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80189444; +extern u8 D_801893B4; +extern u8 D_80189390; +extern u8 D_8018936C; +extern u8 D_80189420; +extern u8 D_801893FC; +extern u8 D_801893D8; +extern u8 D_80189348; +extern void func_80145934(void); +extern u8 D_801894D4; +extern u8 D_801894B0; +extern u8 D_8018948C; +extern u8 D_80189468; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801888CC[]; +extern unsigned char D_801888FC[]; +extern unsigned char D_8018894C[]; +extern unsigned char D_8018897C[]; +extern unsigned char D_801889AC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801889FC[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80188AC4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80188B4C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80188B54; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801C0008; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801C000C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80188B84; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80188C2C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80188C50[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80188C40; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80188C64[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80188C70[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80188C80[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80188C98[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80188C88; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80188CAC[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80188CC8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80188CB8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80188CDC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80188CF0[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80188D04; +extern void (*D_80188D2C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80188D0C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80188D38[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80188D78[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80188D7C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80188F70[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801891E0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801891F0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801C0040; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80189218[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801891F8; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80189208; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80189258[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80189260[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018922C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018926C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018923C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801C0048; +extern s32 D_801C0054; +extern s32 D_801C0058; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801892A8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801C0048; +extern int D_801C0054; +extern int D_801C0058; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801892AC[])(void); + extern int D_801C004C; + extern int D_801C0050; + short sVar1; + + D_801892AC[*(unsigned short *)(param_1 + 2)](); + switch (D_801C0048) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C0050 = 0; + D_801C004C = 0x46; + D_801C0048 += 1; + break; + case 2: + if (D_801C004C == 0) { + if (SsGetMute() == 0) { + D_801C0048 += 1; + } + } else { + D_801C004C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C0048 += 1; + } + break; + case 4: + D_801C0054 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C004C = 0xd2; + } else { + D_801C004C = 1; + } + break; + case 5: + D_801C004C -= 1; + if (D_801C004C == -1 || D_801C0058 != 0) { + D_801C004C = 0; + D_801C0048 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C004C = 0x28; + D_801C0048 += 1; + break; + case 7: + if (D_801C004C == 0) { + if (SsGetMute() == 0) { + D_801C0048 += 1; + } + } else { + D_801C004C -= 1; + } + break; + case 8: + D_801C0050 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801C0048; + +void func_80158BB0(void *arg0) { + if (D_801C0048 == 0) { + D_801C0048 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801C0054; +extern s32 D_8018927C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C0054; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018927C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801C0058; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C0058 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801C0048; +extern s32 D_801C0050; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801C0048 == 4) { + D_801C0048 = 5; + } + if (D_801C0050 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801892E4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801892E4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_801588CC", func_801594E8); + + +extern void (*D_801894F8[])(void); + +void func_80159698(void *a0) { + D_801894F8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80189318)); + func_80028620(1, &(*(u8 *)&D_80189318) + 0x10); + func_80028620(2, &(*(u8 *)&D_80189318) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018959C[])(void); + +void func_80159968(void *a0) { + D_8018959C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801896F0[])(void); + +void func_80159B70(void *a0) { + D_801896F0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018950C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018950C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_028/ov_SC03_028_jr_80154C24.c b/src/ov_SC03_028/ov_SC03_028_jr_80154C24.c index 4dc0b107d..97ffdf373 100644 --- a/src/ov_SC03_028/ov_SC03_028_jr_80154C24.c +++ b/src/ov_SC03_028/ov_SC03_028_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018DD74[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801EA380; - -void func_80158BB0(void *arg0) { - if (D_801EA380 == 0) { - D_801EA380 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801EA38C; -extern s32 D_8018DD48[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801EA38C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018DD48[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801EA390; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801EA390 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801EA380; -extern s32 D_801EA388; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801EA380 == 4) { - D_801EA380 = 5; - } - if (D_801EA388 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018DDB0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018DDB0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80154C24", func_801594E8); - - -extern void (*D_8018DFC4[])(void); - -void func_80159698(void *a0) { - D_8018DFC4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018DDE4)); - func_80028620(1, &(*(u8 *)&D_8018DDE4) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018DDE4) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018E068[])(void); - -void func_80159968(void *a0) { - D_8018E068[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018E1BC[])(void); - -void func_80159B70(void *a0) { - D_8018E1BC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018DFD8; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018DFD8); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_028/ov_SC03_028_jr_801588CC.c b/src/ov_SC03_028/ov_SC03_028_jr_801588CC.c new file mode 100644 index 000000000..2e410a153 --- /dev/null +++ b/src/ov_SC03_028/ov_SC03_028_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018DF10; +extern u8 D_8018DE80; +extern u8 D_8018DE5C; +extern u8 D_8018DE38; +extern u8 D_8018DEEC; +extern u8 D_8018DEC8; +extern u8 D_8018DEA4; +extern u8 D_8018DE14; +extern void func_80145934(void); +extern u8 D_8018DFA0; +extern u8 D_8018DF7C; +extern u8 D_8018DF58; +extern u8 D_8018DF34; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018D398[]; +extern unsigned char D_8018D3C8[]; +extern unsigned char D_8018D418[]; +extern unsigned char D_8018D448[]; +extern unsigned char D_8018D478[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018D4C8[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018D590[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018D618[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018D620; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801EA340; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801EA344; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018D650; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018D6F8[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018D71C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018D70C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018D730[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018D73C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018D74C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018D764[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D754; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018D778[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018D794[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D784; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018D7A8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018D7BC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018D7D0; +extern void (*D_8018D7F8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D7D8; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018D804[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018D844[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018D848[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018DA3C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018DCAC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018DCBC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801EA378; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018DCE4[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018DCC4; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018DCD4; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018DD24[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018DD2C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018DCF8; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018DD38[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018DD08; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801EA380; +extern s32 D_801EA38C; +extern s32 D_801EA390; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018DD74[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801EA380; +extern int D_801EA38C; +extern int D_801EA390; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018DD78[])(void); + extern int D_801EA384; + extern int D_801EA388; + short sVar1; + + D_8018DD78[*(unsigned short *)(param_1 + 2)](); + switch (D_801EA380) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801EA388 = 0; + D_801EA384 = 0x46; + D_801EA380 += 1; + break; + case 2: + if (D_801EA384 == 0) { + if (SsGetMute() == 0) { + D_801EA380 += 1; + } + } else { + D_801EA384 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801EA380 += 1; + } + break; + case 4: + D_801EA38C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801EA384 = 0xd2; + } else { + D_801EA384 = 1; + } + break; + case 5: + D_801EA384 -= 1; + if (D_801EA384 == -1 || D_801EA390 != 0) { + D_801EA384 = 0; + D_801EA380 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801EA384 = 0x28; + D_801EA380 += 1; + break; + case 7: + if (D_801EA384 == 0) { + if (SsGetMute() == 0) { + D_801EA380 += 1; + } + } else { + D_801EA384 -= 1; + } + break; + case 8: + D_801EA388 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801EA380; + +void func_80158BB0(void *arg0) { + if (D_801EA380 == 0) { + D_801EA380 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801EA38C; +extern s32 D_8018DD48[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801EA38C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018DD48[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801EA390; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801EA390 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801EA380; +extern s32 D_801EA388; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801EA380 == 4) { + D_801EA380 = 5; + } + if (D_801EA388 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018DDB0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018DDB0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_801588CC", func_801594E8); + + +extern void (*D_8018DFC4[])(void); + +void func_80159698(void *a0) { + D_8018DFC4[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018DDE4)); + func_80028620(1, &(*(u8 *)&D_8018DDE4) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018DDE4) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018E068[])(void); + +void func_80159968(void *a0) { + D_8018E068[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018E1BC[])(void); + +void func_80159B70(void *a0) { + D_8018E1BC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018DFD8; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018DFD8); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_029/ov_SC03_029_jr_80154C24.c b/src/ov_SC03_029/ov_SC03_029_jr_80154C24.c index 3bce1c697..6d8025838 100644 --- a/src/ov_SC03_029/ov_SC03_029_jr_80154C24.c +++ b/src/ov_SC03_029/ov_SC03_029_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80189BAC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801D8358; - -void func_80158BB0(void *arg0) { - if (D_801D8358 == 0) { - D_801D8358 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801D8364; -extern s32 D_80189B80[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801D8364; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80189B80[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801D8368; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801D8368 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801D8358; -extern s32 D_801D8360; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801D8358 == 4) { - D_801D8358 = 5; - } - if (D_801D8360 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80189BE8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80189BE8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_80154C24", func_801594E8); - - -extern void (*D_80189DFC[])(void); - -void func_80159698(void *a0) { - D_80189DFC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80189C1C)); - func_80028620(1, &(*(u8 *)&D_80189C1C) + 0x10); - func_80028620(2, &(*(u8 *)&D_80189C1C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80189EA0[])(void); - -void func_80159968(void *a0) { - D_80189EA0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80189FF4[])(void); - -void func_80159B70(void *a0) { - D_80189FF4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80189E10; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80189E10); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_029/ov_SC03_029_jr_801588CC.c b/src/ov_SC03_029/ov_SC03_029_jr_801588CC.c new file mode 100644 index 000000000..a3cec993d --- /dev/null +++ b/src/ov_SC03_029/ov_SC03_029_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80189D48; +extern u8 D_80189CB8; +extern u8 D_80189C94; +extern u8 D_80189C70; +extern u8 D_80189D24; +extern u8 D_80189D00; +extern u8 D_80189CDC; +extern u8 D_80189C4C; +extern void func_80145934(void); +extern u8 D_80189DD8; +extern u8 D_80189DB4; +extern u8 D_80189D90; +extern u8 D_80189D6C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801891D0[]; +extern unsigned char D_80189200[]; +extern unsigned char D_80189250[]; +extern unsigned char D_80189280[]; +extern unsigned char D_801892B0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80189300[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801893C8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80189450[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80189458; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801D8318; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801D831C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80189488; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80189530[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80189554[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80189544; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80189568[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80189574[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80189584[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018959C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018958C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801895B0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801895CC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801895BC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801895E0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801895F4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80189608; +extern void (*D_80189630[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80189610; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018963C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018967C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80189680[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80189874[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80189AE4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80189AF4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801D8350; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80189B1C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80189AFC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80189B0C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80189B5C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80189B64[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80189B30; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80189B70[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80189B40; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801D8358; +extern s32 D_801D8364; +extern s32 D_801D8368; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80189BAC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801D8358; +extern int D_801D8364; +extern int D_801D8368; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80189BB0[])(void); + extern int D_801D835C; + extern int D_801D8360; + short sVar1; + + D_80189BB0[*(unsigned short *)(param_1 + 2)](); + switch (D_801D8358) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801D8360 = 0; + D_801D835C = 0x46; + D_801D8358 += 1; + break; + case 2: + if (D_801D835C == 0) { + if (SsGetMute() == 0) { + D_801D8358 += 1; + } + } else { + D_801D835C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801D8358 += 1; + } + break; + case 4: + D_801D8364 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801D835C = 0xd2; + } else { + D_801D835C = 1; + } + break; + case 5: + D_801D835C -= 1; + if (D_801D835C == -1 || D_801D8368 != 0) { + D_801D835C = 0; + D_801D8358 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801D835C = 0x28; + D_801D8358 += 1; + break; + case 7: + if (D_801D835C == 0) { + if (SsGetMute() == 0) { + D_801D8358 += 1; + } + } else { + D_801D835C -= 1; + } + break; + case 8: + D_801D8360 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801D8358; + +void func_80158BB0(void *arg0) { + if (D_801D8358 == 0) { + D_801D8358 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801D8364; +extern s32 D_80189B80[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801D8364; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80189B80[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801D8368; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801D8368 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801D8358; +extern s32 D_801D8360; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801D8358 == 4) { + D_801D8358 = 5; + } + if (D_801D8360 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80189BE8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80189BE8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_801588CC", func_801594E8); + + +extern void (*D_80189DFC[])(void); + +void func_80159698(void *a0) { + D_80189DFC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80189C1C)); + func_80028620(1, &(*(u8 *)&D_80189C1C) + 0x10); + func_80028620(2, &(*(u8 *)&D_80189C1C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80189EA0[])(void); + +void func_80159968(void *a0) { + D_80189EA0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80189FF4[])(void); + +void func_80159B70(void *a0) { + D_80189FF4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80189E10; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80189E10); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_030/ov_SC03_030_jr_80154C24.c b/src/ov_SC03_030/ov_SC03_030_jr_80154C24.c index 0c6cf735a..86da5f1ed 100644 --- a/src/ov_SC03_030/ov_SC03_030_jr_80154C24.c +++ b/src/ov_SC03_030/ov_SC03_030_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801841E8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E0950; - -void func_80158BB0(void *arg0) { - if (D_801E0950 == 0) { - D_801E0950 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E095C; -extern s32 D_801841BC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E095C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801841BC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E0960; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E0960 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E0950; -extern s32 D_801E0958; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E0950 == 4) { - D_801E0950 = 5; - } - if (D_801E0958 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184224[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184224; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_80154C24", func_801594E8); - - -extern void (*D_80184438[])(void); - -void func_80159698(void *a0) { - D_80184438[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80184258)); - func_80028620(1, &(*(u8 *)&D_80184258) + 0x10); - func_80028620(2, &(*(u8 *)&D_80184258) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801844DC[])(void); - -void func_80159968(void *a0) { - D_801844DC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80184630[])(void); - -void func_80159B70(void *a0) { - D_80184630[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018444C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018444C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_030/ov_SC03_030_jr_801588CC.c b/src/ov_SC03_030/ov_SC03_030_jr_801588CC.c new file mode 100644 index 000000000..58c2a0a3b --- /dev/null +++ b/src/ov_SC03_030/ov_SC03_030_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80184384; +extern u8 D_801842F4; +extern u8 D_801842D0; +extern u8 D_801842AC; +extern u8 D_80184360; +extern u8 D_8018433C; +extern u8 D_80184318; +extern u8 D_80184288; +extern void func_80145934(void); +extern u8 D_80184414; +extern u8 D_801843F0; +extern u8 D_801843CC; +extern u8 D_801843A8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018380C[]; +extern unsigned char D_8018383C[]; +extern unsigned char D_8018388C[]; +extern unsigned char D_801838BC[]; +extern unsigned char D_801838EC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018393C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80183A04[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80183A8C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80183A94; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E0910; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E0914; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80183AC4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80183B6C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80183B90[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80183B80; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80183BA4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80183BB0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80183BC0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80183BD8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183BC8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80183BEC[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80183C08[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183BF8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80183C1C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80183C30[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80183C44; +extern void (*D_80183C6C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183C4C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80183C78[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80183CB8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80183CBC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80183EB0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184120[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184130[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E0948; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184158[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80184138; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80184148; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80184198[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801841A0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018416C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801841AC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018417C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E0950; +extern s32 D_801E095C; +extern s32 D_801E0960; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801841E8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801E0950; +extern int D_801E095C; +extern int D_801E0960; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801841EC[])(void); + extern int D_801E0954; + extern int D_801E0958; + short sVar1; + + D_801841EC[*(unsigned short *)(param_1 + 2)](); + switch (D_801E0950) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801E0958 = 0; + D_801E0954 = 0x46; + D_801E0950 += 1; + break; + case 2: + if (D_801E0954 == 0) { + if (SsGetMute() == 0) { + D_801E0950 += 1; + } + } else { + D_801E0954 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801E0950 += 1; + } + break; + case 4: + D_801E095C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801E0954 = 0xd2; + } else { + D_801E0954 = 1; + } + break; + case 5: + D_801E0954 -= 1; + if (D_801E0954 == -1 || D_801E0960 != 0) { + D_801E0954 = 0; + D_801E0950 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801E0954 = 0x28; + D_801E0950 += 1; + break; + case 7: + if (D_801E0954 == 0) { + if (SsGetMute() == 0) { + D_801E0950 += 1; + } + } else { + D_801E0954 -= 1; + } + break; + case 8: + D_801E0958 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801E0950; + +void func_80158BB0(void *arg0) { + if (D_801E0950 == 0) { + D_801E0950 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801E095C; +extern s32 D_801841BC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801E095C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801841BC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801E0960; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801E0960 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801E0950; +extern s32 D_801E0958; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801E0950 == 4) { + D_801E0950 = 5; + } + if (D_801E0958 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184224[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184224; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_801588CC", func_801594E8); + + +extern void (*D_80184438[])(void); + +void func_80159698(void *a0) { + D_80184438[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80184258)); + func_80028620(1, &(*(u8 *)&D_80184258) + 0x10); + func_80028620(2, &(*(u8 *)&D_80184258) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801844DC[])(void); + +void func_80159968(void *a0) { + D_801844DC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80184630[])(void); + +void func_80159B70(void *a0) { + D_80184630[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018444C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018444C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_031/ov_SC03_031_jr_80154C24.c b/src/ov_SC03_031/ov_SC03_031_jr_80154C24.c index 3a3013793..3c126003e 100644 --- a/src/ov_SC03_031/ov_SC03_031_jr_80154C24.c +++ b/src/ov_SC03_031/ov_SC03_031_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80184704[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801C4D50; - -void func_80158BB0(void *arg0) { - if (D_801C4D50 == 0) { - D_801C4D50 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801C4D5C; -extern s32 D_801846D8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C4D5C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801846D8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801C4D60; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C4D60 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801C4D50; -extern s32 D_801C4D58; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801C4D50 == 4) { - D_801C4D50 = 5; - } - if (D_801C4D58 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184740[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184740; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_80154C24", func_801594E8); - - -extern void (*D_80184954[])(void); - -void func_80159698(void *a0) { - D_80184954[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80184774)); - func_80028620(1, &(*(u8 *)&D_80184774) + 0x10); - func_80028620(2, &(*(u8 *)&D_80184774) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801849F8[])(void); - -void func_80159968(void *a0) { - D_801849F8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80184B4C[])(void); - -void func_80159B70(void *a0) { - D_80184B4C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80184968; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184968); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_031/ov_SC03_031_jr_801588CC.c b/src/ov_SC03_031/ov_SC03_031_jr_801588CC.c new file mode 100644 index 000000000..e6012c0b9 --- /dev/null +++ b/src/ov_SC03_031/ov_SC03_031_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801848A0; +extern u8 D_80184810; +extern u8 D_801847EC; +extern u8 D_801847C8; +extern u8 D_8018487C; +extern u8 D_80184858; +extern u8 D_80184834; +extern u8 D_801847A4; +extern void func_80145934(void); +extern u8 D_80184930; +extern u8 D_8018490C; +extern u8 D_801848E8; +extern u8 D_801848C4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80183D28[]; +extern unsigned char D_80183D58[]; +extern unsigned char D_80183DA8[]; +extern unsigned char D_80183DD8[]; +extern unsigned char D_80183E08[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80183E58[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80183F20[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80183FA8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80183FB0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801C4D10; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801C4D14; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80183FE0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80184088[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801840AC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018409C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801840C0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801840CC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801840DC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801840F4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801840E4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80184108[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80184124[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80184114; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80184138[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018414C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80184160; +extern void (*D_80184188[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80184168; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80184194[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801841D4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801841D8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801843CC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018463C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018464C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801C4D48; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184674[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80184654; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80184664; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801846B4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801846BC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184688; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801846C8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80184698; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801C4D50; +extern s32 D_801C4D5C; +extern s32 D_801C4D60; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184704[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801C4D50; +extern int D_801C4D5C; +extern int D_801C4D60; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80184708[])(void); + extern int D_801C4D54; + extern int D_801C4D58; + short sVar1; + + D_80184708[*(unsigned short *)(param_1 + 2)](); + switch (D_801C4D50) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C4D58 = 0; + D_801C4D54 = 0x46; + D_801C4D50 += 1; + break; + case 2: + if (D_801C4D54 == 0) { + if (SsGetMute() == 0) { + D_801C4D50 += 1; + } + } else { + D_801C4D54 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C4D50 += 1; + } + break; + case 4: + D_801C4D5C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C4D54 = 0xd2; + } else { + D_801C4D54 = 1; + } + break; + case 5: + D_801C4D54 -= 1; + if (D_801C4D54 == -1 || D_801C4D60 != 0) { + D_801C4D54 = 0; + D_801C4D50 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C4D54 = 0x28; + D_801C4D50 += 1; + break; + case 7: + if (D_801C4D54 == 0) { + if (SsGetMute() == 0) { + D_801C4D50 += 1; + } + } else { + D_801C4D54 -= 1; + } + break; + case 8: + D_801C4D58 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801C4D50; + +void func_80158BB0(void *arg0) { + if (D_801C4D50 == 0) { + D_801C4D50 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801C4D5C; +extern s32 D_801846D8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C4D5C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801846D8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801C4D60; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C4D60 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801C4D50; +extern s32 D_801C4D58; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801C4D50 == 4) { + D_801C4D50 = 5; + } + if (D_801C4D58 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184740[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184740; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_801588CC", func_801594E8); + + +extern void (*D_80184954[])(void); + +void func_80159698(void *a0) { + D_80184954[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80184774)); + func_80028620(1, &(*(u8 *)&D_80184774) + 0x10); + func_80028620(2, &(*(u8 *)&D_80184774) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801849F8[])(void); + +void func_80159968(void *a0) { + D_801849F8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80184B4C[])(void); + +void func_80159B70(void *a0) { + D_80184B4C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80184968; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184968); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_089/ov_SC03_089_jr_80154C24.c b/src/ov_SC03_089/ov_SC03_089_jr_80154C24.c index 9db2b066f..33349d7e3 100644 --- a/src/ov_SC03_089/ov_SC03_089_jr_80154C24.c +++ b/src/ov_SC03_089/ov_SC03_089_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018BA00[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801C5608; - -void func_80158BB0(void *arg0) { - if (D_801C5608 == 0) { - D_801C5608 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801C5614; -extern s32 D_8018B9D4[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C5614; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018B9D4[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801C5618; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C5618 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801C5608; -extern s32 D_801C5610; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801C5608 == 4) { - D_801C5608 = 5; - } - if (D_801C5610 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018BA3C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018BA3C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_80154C24", func_801594E8); - - -extern void (*D_8018BC50[])(void); - -void func_80159698(void *a0) { - D_8018BC50[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018BA70)); - func_80028620(1, &(*(u8 *)&D_8018BA70) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018BA70) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018BCF4[])(void); - -void func_80159968(void *a0) { - D_8018BCF4[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018BE48[])(void); - -void func_80159B70(void *a0) { - D_8018BE48[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018BC64; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018BC64); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_089/ov_SC03_089_jr_801588CC.c b/src/ov_SC03_089/ov_SC03_089_jr_801588CC.c new file mode 100644 index 000000000..35317579e --- /dev/null +++ b/src/ov_SC03_089/ov_SC03_089_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018BB9C; +extern u8 D_8018BB0C; +extern u8 D_8018BAE8; +extern u8 D_8018BAC4; +extern u8 D_8018BB78; +extern u8 D_8018BB54; +extern u8 D_8018BB30; +extern u8 D_8018BAA0; +extern void func_80145934(void); +extern u8 D_8018BC2C; +extern u8 D_8018BC08; +extern u8 D_8018BBE4; +extern u8 D_8018BBC0; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018B024[]; +extern unsigned char D_8018B054[]; +extern unsigned char D_8018B0A4[]; +extern unsigned char D_8018B0D4[]; +extern unsigned char D_8018B104[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018B154[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018B21C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018B2A4[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018B2AC; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801C55C8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801C55CC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018B2DC; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018B384[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018B3A8[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018B398; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018B3BC[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018B3C8[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018B3D8[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018B3F0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018B3E0; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018B404[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018B420[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018B410; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018B434[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018B448[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018B45C; +extern void (*D_8018B484[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018B464; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018B490[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018B4D0[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018B4D4[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018B6C8[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018B938[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018B948[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801C5600; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018B970[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018B950; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018B960; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018B9B0[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018B9B8[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018B984; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018B9C4[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018B994; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801C5608; +extern s32 D_801C5614; +extern s32 D_801C5618; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018BA00[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801C5608; +extern int D_801C5614; +extern int D_801C5618; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018BA04[])(void); + extern int D_801C560C; + extern int D_801C5610; + short sVar1; + + D_8018BA04[*(unsigned short *)(param_1 + 2)](); + switch (D_801C5608) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C5610 = 0; + D_801C560C = 0x46; + D_801C5608 += 1; + break; + case 2: + if (D_801C560C == 0) { + if (SsGetMute() == 0) { + D_801C5608 += 1; + } + } else { + D_801C560C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C5608 += 1; + } + break; + case 4: + D_801C5614 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C560C = 0xd2; + } else { + D_801C560C = 1; + } + break; + case 5: + D_801C560C -= 1; + if (D_801C560C == -1 || D_801C5618 != 0) { + D_801C560C = 0; + D_801C5608 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C560C = 0x28; + D_801C5608 += 1; + break; + case 7: + if (D_801C560C == 0) { + if (SsGetMute() == 0) { + D_801C5608 += 1; + } + } else { + D_801C560C -= 1; + } + break; + case 8: + D_801C5610 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801C5608; + +void func_80158BB0(void *arg0) { + if (D_801C5608 == 0) { + D_801C5608 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801C5614; +extern s32 D_8018B9D4[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C5614; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018B9D4[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801C5618; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C5618 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801C5608; +extern s32 D_801C5610; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801C5608 == 4) { + D_801C5608 = 5; + } + if (D_801C5610 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018BA3C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018BA3C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_801588CC", func_801594E8); + + +extern void (*D_8018BC50[])(void); + +void func_80159698(void *a0) { + D_8018BC50[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018BA70)); + func_80028620(1, &(*(u8 *)&D_8018BA70) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018BA70) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018BCF4[])(void); + +void func_80159968(void *a0) { + D_8018BCF4[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018BE48[])(void); + +void func_80159B70(void *a0) { + D_8018BE48[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018BC64; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018BC64); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_090/ov_SC03_090_jr_80154C24.c b/src/ov_SC03_090/ov_SC03_090_jr_80154C24.c index 910bd2ce8..64f875301 100644 --- a/src/ov_SC03_090/ov_SC03_090_jr_80154C24.c +++ b/src/ov_SC03_090/ov_SC03_090_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018DE24[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801CAA70; - -void func_80158BB0(void *arg0) { - if (D_801CAA70 == 0) { - D_801CAA70 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801CAA7C; -extern s32 D_8018DDF8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801CAA7C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018DDF8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801CAA80; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801CAA80 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801CAA70; -extern s32 D_801CAA78; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801CAA70 == 4) { - D_801CAA70 = 5; - } - if (D_801CAA78 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018DE60[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018DE60; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_80154C24", func_801594E8); - - -extern void (*D_8018E074[])(void); - -void func_80159698(void *a0) { - D_8018E074[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018DE94)); - func_80028620(1, &(*(u8 *)&D_8018DE94) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018DE94) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018E118[])(void); - -void func_80159968(void *a0) { - D_8018E118[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018E26C[])(void); - -void func_80159B70(void *a0) { - D_8018E26C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018E088; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018E088); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_090/ov_SC03_090_jr_801588CC.c b/src/ov_SC03_090/ov_SC03_090_jr_801588CC.c new file mode 100644 index 000000000..0d376212a --- /dev/null +++ b/src/ov_SC03_090/ov_SC03_090_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018DFC0; +extern u8 D_8018DF30; +extern u8 D_8018DF0C; +extern u8 D_8018DEE8; +extern u8 D_8018DF9C; +extern u8 D_8018DF78; +extern u8 D_8018DF54; +extern u8 D_8018DEC4; +extern void func_80145934(void); +extern u8 D_8018E050; +extern u8 D_8018E02C; +extern u8 D_8018E008; +extern u8 D_8018DFE4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018D448[]; +extern unsigned char D_8018D478[]; +extern unsigned char D_8018D4C8[]; +extern unsigned char D_8018D4F8[]; +extern unsigned char D_8018D528[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018D578[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018D640[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018D6C8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018D6D0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801CAA30; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801CAA34; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018D700; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018D7A8[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018D7CC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018D7BC; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018D7E0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018D7EC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018D7FC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018D814[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D804; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018D828[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018D844[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D834; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018D858[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018D86C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018D880; +extern void (*D_8018D8A8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D888; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018D8B4[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018D8F4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018D8F8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018DAEC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018DD5C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018DD6C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801CAA68; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018DD94[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018DD74; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018DD84; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018DDD4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018DDDC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018DDA8; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018DDE8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018DDB8; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801CAA70; +extern s32 D_801CAA7C; +extern s32 D_801CAA80; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018DE24[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801CAA70; +extern int D_801CAA7C; +extern int D_801CAA80; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018DE28[])(void); + extern int D_801CAA74; + extern int D_801CAA78; + short sVar1; + + D_8018DE28[*(unsigned short *)(param_1 + 2)](); + switch (D_801CAA70) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801CAA78 = 0; + D_801CAA74 = 0x46; + D_801CAA70 += 1; + break; + case 2: + if (D_801CAA74 == 0) { + if (SsGetMute() == 0) { + D_801CAA70 += 1; + } + } else { + D_801CAA74 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801CAA70 += 1; + } + break; + case 4: + D_801CAA7C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801CAA74 = 0xd2; + } else { + D_801CAA74 = 1; + } + break; + case 5: + D_801CAA74 -= 1; + if (D_801CAA74 == -1 || D_801CAA80 != 0) { + D_801CAA74 = 0; + D_801CAA70 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801CAA74 = 0x28; + D_801CAA70 += 1; + break; + case 7: + if (D_801CAA74 == 0) { + if (SsGetMute() == 0) { + D_801CAA70 += 1; + } + } else { + D_801CAA74 -= 1; + } + break; + case 8: + D_801CAA78 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801CAA70; + +void func_80158BB0(void *arg0) { + if (D_801CAA70 == 0) { + D_801CAA70 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801CAA7C; +extern s32 D_8018DDF8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801CAA7C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018DDF8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801CAA80; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801CAA80 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801CAA70; +extern s32 D_801CAA78; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801CAA70 == 4) { + D_801CAA70 = 5; + } + if (D_801CAA78 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018DE60[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018DE60; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_801588CC", func_801594E8); + + +extern void (*D_8018E074[])(void); + +void func_80159698(void *a0) { + D_8018E074[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018DE94)); + func_80028620(1, &(*(u8 *)&D_8018DE94) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018DE94) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018E118[])(void); + +void func_80159968(void *a0) { + D_8018E118[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018E26C[])(void); + +void func_80159B70(void *a0) { + D_8018E26C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018E088; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018E088); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_091/ov_SC03_091_jr_80154C24.c b/src/ov_SC03_091/ov_SC03_091_jr_80154C24.c index 49db42fb3..1b0f0cb94 100644 --- a/src/ov_SC03_091/ov_SC03_091_jr_80154C24.c +++ b/src/ov_SC03_091/ov_SC03_091_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018ECCC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801D1140; - -void func_80158BB0(void *arg0) { - if (D_801D1140 == 0) { - D_801D1140 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801D114C; -extern s32 D_8018ECA0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801D114C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018ECA0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801D1150; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801D1150 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801D1140; -extern s32 D_801D1148; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801D1140 == 4) { - D_801D1140 = 5; - } - if (D_801D1148 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018ED08[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018ED08; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_80154C24", func_801594E8); - - -extern void (*D_8018EF1C[])(void); - -void func_80159698(void *a0) { - D_8018EF1C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018ED3C)); - func_80028620(1, &(*(u8 *)&D_8018ED3C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018ED3C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018EFC0[])(void); - -void func_80159968(void *a0) { - D_8018EFC0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018F114[])(void); - -void func_80159B70(void *a0) { - D_8018F114[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018EF30; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018EF30); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_091/ov_SC03_091_jr_801588CC.c b/src/ov_SC03_091/ov_SC03_091_jr_801588CC.c new file mode 100644 index 000000000..c6e01ebc8 --- /dev/null +++ b/src/ov_SC03_091/ov_SC03_091_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018EE68; +extern u8 D_8018EDD8; +extern u8 D_8018EDB4; +extern u8 D_8018ED90; +extern u8 D_8018EE44; +extern u8 D_8018EE20; +extern u8 D_8018EDFC; +extern u8 D_8018ED6C; +extern void func_80145934(void); +extern u8 D_8018EEF8; +extern u8 D_8018EED4; +extern u8 D_8018EEB0; +extern u8 D_8018EE8C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018E2F0[]; +extern unsigned char D_8018E320[]; +extern unsigned char D_8018E370[]; +extern unsigned char D_8018E3A0[]; +extern unsigned char D_8018E3D0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018E420[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018E4E8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018E570[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018E578; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801D1100; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801D1104; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018E5A8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018E650[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018E674[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018E664; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018E688[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018E694[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018E6A4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018E6BC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018E6AC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018E6D0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018E6EC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018E6DC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018E700[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018E714[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018E728; +extern void (*D_8018E750[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018E730; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018E75C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018E79C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018E7A0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018E994[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018EC04[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018EC14[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801D1138; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018EC3C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018EC1C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018EC2C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018EC7C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018EC84[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018EC50; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018EC90[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018EC60; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801D1140; +extern s32 D_801D114C; +extern s32 D_801D1150; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018ECCC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801D1140; +extern int D_801D114C; +extern int D_801D1150; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018ECD0[])(void); + extern int D_801D1144; + extern int D_801D1148; + short sVar1; + + D_8018ECD0[*(unsigned short *)(param_1 + 2)](); + switch (D_801D1140) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801D1148 = 0; + D_801D1144 = 0x46; + D_801D1140 += 1; + break; + case 2: + if (D_801D1144 == 0) { + if (SsGetMute() == 0) { + D_801D1140 += 1; + } + } else { + D_801D1144 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801D1140 += 1; + } + break; + case 4: + D_801D114C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801D1144 = 0xd2; + } else { + D_801D1144 = 1; + } + break; + case 5: + D_801D1144 -= 1; + if (D_801D1144 == -1 || D_801D1150 != 0) { + D_801D1144 = 0; + D_801D1140 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801D1144 = 0x28; + D_801D1140 += 1; + break; + case 7: + if (D_801D1144 == 0) { + if (SsGetMute() == 0) { + D_801D1140 += 1; + } + } else { + D_801D1144 -= 1; + } + break; + case 8: + D_801D1148 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801D1140; + +void func_80158BB0(void *arg0) { + if (D_801D1140 == 0) { + D_801D1140 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801D114C; +extern s32 D_8018ECA0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801D114C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018ECA0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801D1150; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801D1150 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801D1140; +extern s32 D_801D1148; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801D1140 == 4) { + D_801D1140 = 5; + } + if (D_801D1148 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018ED08[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018ED08; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_801588CC", func_801594E8); + + +extern void (*D_8018EF1C[])(void); + +void func_80159698(void *a0) { + D_8018EF1C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018ED3C)); + func_80028620(1, &(*(u8 *)&D_8018ED3C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018ED3C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018EFC0[])(void); + +void func_80159968(void *a0) { + D_8018EFC0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018F114[])(void); + +void func_80159B70(void *a0) { + D_8018F114[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018EF30; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018EF30); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_092/ov_SC03_092_jr_80154C24.c b/src/ov_SC03_092/ov_SC03_092_jr_80154C24.c index 494e0909f..7f58adeb6 100644 --- a/src/ov_SC03_092/ov_SC03_092_jr_80154C24.c +++ b/src/ov_SC03_092/ov_SC03_092_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018709C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B1D08; - -void func_80158BB0(void *arg0) { - if (D_801B1D08 == 0) { - D_801B1D08 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B1D14; -extern s32 D_80187070[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B1D14; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187070[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B1D18; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B1D18 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B1D08; -extern s32 D_801B1D10; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B1D08 == 4) { - D_801B1D08 = 5; - } - if (D_801B1D10 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801870D8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801870D8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_80154C24", func_801594E8); - - -extern void (*D_801872EC[])(void); - -void func_80159698(void *a0) { - D_801872EC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018710C)); - func_80028620(1, &(*(u8 *)&D_8018710C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018710C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80187390[])(void); - -void func_80159968(void *a0) { - D_80187390[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801874E4[])(void); - -void func_80159B70(void *a0) { - D_801874E4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80187300; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187300); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_092/ov_SC03_092_jr_801588CC.c b/src/ov_SC03_092/ov_SC03_092_jr_801588CC.c new file mode 100644 index 000000000..fb720e977 --- /dev/null +++ b/src/ov_SC03_092/ov_SC03_092_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80187238; +extern u8 D_801871A8; +extern u8 D_80187184; +extern u8 D_80187160; +extern u8 D_80187214; +extern u8 D_801871F0; +extern u8 D_801871CC; +extern u8 D_8018713C; +extern void func_80145934(void); +extern u8 D_801872C8; +extern u8 D_801872A4; +extern u8 D_80187280; +extern u8 D_8018725C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801866C0[]; +extern unsigned char D_801866F0[]; +extern unsigned char D_80186740[]; +extern unsigned char D_80186770[]; +extern unsigned char D_801867A0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801867F0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801868B8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80186940[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80186948; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B1CC8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B1CCC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80186978; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80186A20[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80186A44[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80186A34; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80186A58[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80186A64[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80186A74[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80186A8C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186A7C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80186AA0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80186ABC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186AAC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80186AD0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80186AE4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80186AF8; +extern void (*D_80186B20[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186B00; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80186B2C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80186B6C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80186B70[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80186D64[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80186FD4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80186FE4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B1D00; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018700C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80186FEC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80186FFC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018704C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80187054[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80187020; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80187060[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80187030; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B1D08; +extern s32 D_801B1D14; +extern s32 D_801B1D18; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018709C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B1D08; +extern int D_801B1D14; +extern int D_801B1D18; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801870A0[])(void); + extern int D_801B1D0C; + extern int D_801B1D10; + short sVar1; + + D_801870A0[*(unsigned short *)(param_1 + 2)](); + switch (D_801B1D08) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B1D10 = 0; + D_801B1D0C = 0x46; + D_801B1D08 += 1; + break; + case 2: + if (D_801B1D0C == 0) { + if (SsGetMute() == 0) { + D_801B1D08 += 1; + } + } else { + D_801B1D0C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B1D08 += 1; + } + break; + case 4: + D_801B1D14 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B1D0C = 0xd2; + } else { + D_801B1D0C = 1; + } + break; + case 5: + D_801B1D0C -= 1; + if (D_801B1D0C == -1 || D_801B1D18 != 0) { + D_801B1D0C = 0; + D_801B1D08 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B1D0C = 0x28; + D_801B1D08 += 1; + break; + case 7: + if (D_801B1D0C == 0) { + if (SsGetMute() == 0) { + D_801B1D08 += 1; + } + } else { + D_801B1D0C -= 1; + } + break; + case 8: + D_801B1D10 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B1D08; + +void func_80158BB0(void *arg0) { + if (D_801B1D08 == 0) { + D_801B1D08 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B1D14; +extern s32 D_80187070[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B1D14; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187070[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B1D18; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B1D18 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B1D08; +extern s32 D_801B1D10; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B1D08 == 4) { + D_801B1D08 = 5; + } + if (D_801B1D10 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801870D8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801870D8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_801588CC", func_801594E8); + + +extern void (*D_801872EC[])(void); + +void func_80159698(void *a0) { + D_801872EC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018710C)); + func_80028620(1, &(*(u8 *)&D_8018710C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018710C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80187390[])(void); + +void func_80159968(void *a0) { + D_80187390[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801874E4[])(void); + +void func_80159B70(void *a0) { + D_801874E4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80187300; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187300); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_093/ov_SC03_093_jr_80154C24.c b/src/ov_SC03_093/ov_SC03_093_jr_80154C24.c index 57e1d2087..59b01b9b8 100644 --- a/src/ov_SC03_093/ov_SC03_093_jr_80154C24.c +++ b/src/ov_SC03_093/ov_SC03_093_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80188274[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801CB178; - -void func_80158BB0(void *arg0) { - if (D_801CB178 == 0) { - D_801CB178 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801CB184; -extern s32 D_80188248[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801CB184; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188248[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801CB188; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801CB188 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801CB178; -extern s32 D_801CB180; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801CB178 == 4) { - D_801CB178 = 5; - } - if (D_801CB180 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801882B0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801882B0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_80154C24", func_801594E8); - - -extern void (*D_801884C4[])(void); - -void func_80159698(void *a0) { - D_801884C4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801882E4)); - func_80028620(1, &(*(u8 *)&D_801882E4) + 0x10); - func_80028620(2, &(*(u8 *)&D_801882E4) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80188568[])(void); - -void func_80159968(void *a0) { - D_80188568[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801886BC[])(void); - -void func_80159B70(void *a0) { - D_801886BC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801884D8; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801884D8); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_093/ov_SC03_093_jr_801588CC.c b/src/ov_SC03_093/ov_SC03_093_jr_801588CC.c new file mode 100644 index 000000000..35c2880d8 --- /dev/null +++ b/src/ov_SC03_093/ov_SC03_093_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80188410; +extern u8 D_80188380; +extern u8 D_8018835C; +extern u8 D_80188338; +extern u8 D_801883EC; +extern u8 D_801883C8; +extern u8 D_801883A4; +extern u8 D_80188314; +extern void func_80145934(void); +extern u8 D_801884A0; +extern u8 D_8018847C; +extern u8 D_80188458; +extern u8 D_80188434; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80187898[]; +extern unsigned char D_801878C8[]; +extern unsigned char D_80187918[]; +extern unsigned char D_80187948[]; +extern unsigned char D_80187978[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801879C8[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80187A90[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80187B18[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80187B20; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801CB138; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801CB13C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80187B50; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80187BF8[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80187C1C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80187C0C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80187C30[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80187C3C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80187C4C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80187C64[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187C54; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80187C78[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80187C94[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80187C84; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80187CA8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80187CBC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80187CD0; +extern void (*D_80187CF8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187CD8; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80187D04[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80187D44[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80187D48[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80187F3C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801881AC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801881BC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801CB170; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801881E4[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801881C4; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801881D4; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80188224[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018822C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801881F8; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80188238[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80188208; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801CB178; +extern s32 D_801CB184; +extern s32 D_801CB188; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188274[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801CB178; +extern int D_801CB184; +extern int D_801CB188; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80188278[])(void); + extern int D_801CB17C; + extern int D_801CB180; + short sVar1; + + D_80188278[*(unsigned short *)(param_1 + 2)](); + switch (D_801CB178) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801CB180 = 0; + D_801CB17C = 0x46; + D_801CB178 += 1; + break; + case 2: + if (D_801CB17C == 0) { + if (SsGetMute() == 0) { + D_801CB178 += 1; + } + } else { + D_801CB17C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801CB178 += 1; + } + break; + case 4: + D_801CB184 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801CB17C = 0xd2; + } else { + D_801CB17C = 1; + } + break; + case 5: + D_801CB17C -= 1; + if (D_801CB17C == -1 || D_801CB188 != 0) { + D_801CB17C = 0; + D_801CB178 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801CB17C = 0x28; + D_801CB178 += 1; + break; + case 7: + if (D_801CB17C == 0) { + if (SsGetMute() == 0) { + D_801CB178 += 1; + } + } else { + D_801CB17C -= 1; + } + break; + case 8: + D_801CB180 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801CB178; + +void func_80158BB0(void *arg0) { + if (D_801CB178 == 0) { + D_801CB178 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801CB184; +extern s32 D_80188248[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801CB184; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188248[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801CB188; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801CB188 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801CB178; +extern s32 D_801CB180; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801CB178 == 4) { + D_801CB178 = 5; + } + if (D_801CB180 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801882B0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801882B0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_801588CC", func_801594E8); + + +extern void (*D_801884C4[])(void); + +void func_80159698(void *a0) { + D_801884C4[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801882E4)); + func_80028620(1, &(*(u8 *)&D_801882E4) + 0x10); + func_80028620(2, &(*(u8 *)&D_801882E4) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80188568[])(void); + +void func_80159968(void *a0) { + D_80188568[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801886BC[])(void); + +void func_80159B70(void *a0) { + D_801886BC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801884D8; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801884D8); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_094/ov_SC03_094_jr_80154C24.c b/src/ov_SC03_094/ov_SC03_094_jr_80154C24.c index 1fe6ce156..2a8d2a606 100644 --- a/src/ov_SC03_094/ov_SC03_094_jr_80154C24.c +++ b/src/ov_SC03_094/ov_SC03_094_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80189C70[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801D1FB8; - -void func_80158BB0(void *arg0) { - if (D_801D1FB8 == 0) { - D_801D1FB8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801D1FC4; -extern s32 D_80189C44[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801D1FC4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80189C44[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801D1FC8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801D1FC8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801D1FB8; -extern s32 D_801D1FC0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801D1FB8 == 4) { - D_801D1FB8 = 5; - } - if (D_801D1FC0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80189CAC[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80189CAC; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_80154C24", func_801594E8); - - -extern void (*D_80189EC0[])(void); - -void func_80159698(void *a0) { - D_80189EC0[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80189CE0)); - func_80028620(1, &(*(u8 *)&D_80189CE0) + 0x10); - func_80028620(2, &(*(u8 *)&D_80189CE0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80189F64[])(void); - -void func_80159968(void *a0) { - D_80189F64[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018A0B8[])(void); - -void func_80159B70(void *a0) { - D_8018A0B8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80189ED4; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80189ED4); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_094/ov_SC03_094_jr_801588CC.c b/src/ov_SC03_094/ov_SC03_094_jr_801588CC.c new file mode 100644 index 000000000..4de507823 --- /dev/null +++ b/src/ov_SC03_094/ov_SC03_094_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80189E0C; +extern u8 D_80189D7C; +extern u8 D_80189D58; +extern u8 D_80189D34; +extern u8 D_80189DE8; +extern u8 D_80189DC4; +extern u8 D_80189DA0; +extern u8 D_80189D10; +extern void func_80145934(void); +extern u8 D_80189E9C; +extern u8 D_80189E78; +extern u8 D_80189E54; +extern u8 D_80189E30; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80189294[]; +extern unsigned char D_801892C4[]; +extern unsigned char D_80189314[]; +extern unsigned char D_80189344[]; +extern unsigned char D_80189374[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801893C4[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018948C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80189514[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018951C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801D1F78; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801D1F7C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018954C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801895F4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80189618[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80189608; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018962C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80189638[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80189648[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80189660[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80189650; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80189674[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80189690[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80189680; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801896A4[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801896B8[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801896CC; +extern void (*D_801896F4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801896D4; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80189700[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80189740[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80189744[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80189938[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80189BA8[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80189BB8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801D1FB0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80189BE0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80189BC0; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80189BD0; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80189C20[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80189C28[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80189BF4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80189C34[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80189C04; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801D1FB8; +extern s32 D_801D1FC4; +extern s32 D_801D1FC8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80189C70[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801D1FB8; +extern int D_801D1FC4; +extern int D_801D1FC8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80189C74[])(void); + extern int D_801D1FBC; + extern int D_801D1FC0; + short sVar1; + + D_80189C74[*(unsigned short *)(param_1 + 2)](); + switch (D_801D1FB8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801D1FC0 = 0; + D_801D1FBC = 0x46; + D_801D1FB8 += 1; + break; + case 2: + if (D_801D1FBC == 0) { + if (SsGetMute() == 0) { + D_801D1FB8 += 1; + } + } else { + D_801D1FBC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801D1FB8 += 1; + } + break; + case 4: + D_801D1FC4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801D1FBC = 0xd2; + } else { + D_801D1FBC = 1; + } + break; + case 5: + D_801D1FBC -= 1; + if (D_801D1FBC == -1 || D_801D1FC8 != 0) { + D_801D1FBC = 0; + D_801D1FB8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801D1FBC = 0x28; + D_801D1FB8 += 1; + break; + case 7: + if (D_801D1FBC == 0) { + if (SsGetMute() == 0) { + D_801D1FB8 += 1; + } + } else { + D_801D1FBC -= 1; + } + break; + case 8: + D_801D1FC0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801D1FB8; + +void func_80158BB0(void *arg0) { + if (D_801D1FB8 == 0) { + D_801D1FB8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801D1FC4; +extern s32 D_80189C44[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801D1FC4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80189C44[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801D1FC8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801D1FC8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801D1FB8; +extern s32 D_801D1FC0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801D1FB8 == 4) { + D_801D1FB8 = 5; + } + if (D_801D1FC0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80189CAC[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80189CAC; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_801588CC", func_801594E8); + + +extern void (*D_80189EC0[])(void); + +void func_80159698(void *a0) { + D_80189EC0[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80189CE0)); + func_80028620(1, &(*(u8 *)&D_80189CE0) + 0x10); + func_80028620(2, &(*(u8 *)&D_80189CE0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80189F64[])(void); + +void func_80159968(void *a0) { + D_80189F64[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018A0B8[])(void); + +void func_80159B70(void *a0) { + D_8018A0B8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80189ED4; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80189ED4); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_095/ov_SC03_095_jr_80154C24.c b/src/ov_SC03_095/ov_SC03_095_jr_80154C24.c index e8b6a0e93..781c3b4c1 100644 --- a/src/ov_SC03_095/ov_SC03_095_jr_80154C24.c +++ b/src/ov_SC03_095/ov_SC03_095_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801832D0[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019ABB0; - -void func_80158BB0(void *arg0) { - if (D_8019ABB0 == 0) { - D_8019ABB0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019ABBC; -extern s32 D_801832A4[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019ABBC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801832A4[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019ABC0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019ABC0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019ABB0; -extern s32 D_8019ABB8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019ABB0 == 4) { - D_8019ABB0 = 5; - } - if (D_8019ABB8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018330C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018330C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_80154C24", func_801594E8); - - -extern void (*D_80183520[])(void); - -void func_80159698(void *a0) { - D_80183520[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80183340)); - func_80028620(1, &(*(u8 *)&D_80183340) + 0x10); - func_80028620(2, &(*(u8 *)&D_80183340) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801835C4[])(void); - -void func_80159968(void *a0) { - D_801835C4[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80183718[])(void); - -void func_80159B70(void *a0) { - D_80183718[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80183534; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80183534); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_095/ov_SC03_095_jr_801588CC.c b/src/ov_SC03_095/ov_SC03_095_jr_801588CC.c new file mode 100644 index 000000000..4f59a37c6 --- /dev/null +++ b/src/ov_SC03_095/ov_SC03_095_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018346C; +extern u8 D_801833DC; +extern u8 D_801833B8; +extern u8 D_80183394; +extern u8 D_80183448; +extern u8 D_80183424; +extern u8 D_80183400; +extern u8 D_80183370; +extern void func_80145934(void); +extern u8 D_801834FC; +extern u8 D_801834D8; +extern u8 D_801834B4; +extern u8 D_80183490; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801828F4[]; +extern unsigned char D_80182924[]; +extern unsigned char D_80182974[]; +extern unsigned char D_801829A4[]; +extern unsigned char D_801829D4[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80182A24[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80182AEC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80182B74[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80182B7C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019AB70; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019AB74; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80182BAC; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80182C54[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80182C78[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80182C68; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80182C8C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80182C98[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80182CA8[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80182CC0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80182CB0; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80182CD4[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80182CF0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80182CE0; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80182D04[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80182D18[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80182D2C; +extern void (*D_80182D54[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80182D34; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80182D60[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80182DA0[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80182DA4[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80182F98[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80183208[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80183218[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019ABA8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80183240[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80183220; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80183230; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80183280[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80183288[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80183254; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80183294[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80183264; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019ABB0; +extern s32 D_8019ABBC; +extern s32 D_8019ABC0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801832D0[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019ABB0; +extern int D_8019ABBC; +extern int D_8019ABC0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801832D4[])(void); + extern int D_8019ABB4; + extern int D_8019ABB8; + short sVar1; + + D_801832D4[*(unsigned short *)(param_1 + 2)](); + switch (D_8019ABB0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019ABB8 = 0; + D_8019ABB4 = 0x46; + D_8019ABB0 += 1; + break; + case 2: + if (D_8019ABB4 == 0) { + if (SsGetMute() == 0) { + D_8019ABB0 += 1; + } + } else { + D_8019ABB4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019ABB0 += 1; + } + break; + case 4: + D_8019ABBC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019ABB4 = 0xd2; + } else { + D_8019ABB4 = 1; + } + break; + case 5: + D_8019ABB4 -= 1; + if (D_8019ABB4 == -1 || D_8019ABC0 != 0) { + D_8019ABB4 = 0; + D_8019ABB0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019ABB4 = 0x28; + D_8019ABB0 += 1; + break; + case 7: + if (D_8019ABB4 == 0) { + if (SsGetMute() == 0) { + D_8019ABB0 += 1; + } + } else { + D_8019ABB4 -= 1; + } + break; + case 8: + D_8019ABB8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019ABB0; + +void func_80158BB0(void *arg0) { + if (D_8019ABB0 == 0) { + D_8019ABB0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019ABBC; +extern s32 D_801832A4[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019ABBC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801832A4[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019ABC0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019ABC0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019ABB0; +extern s32 D_8019ABB8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019ABB0 == 4) { + D_8019ABB0 = 5; + } + if (D_8019ABB8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018330C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018330C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_801588CC", func_801594E8); + + +extern void (*D_80183520[])(void); + +void func_80159698(void *a0) { + D_80183520[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80183340)); + func_80028620(1, &(*(u8 *)&D_80183340) + 0x10); + func_80028620(2, &(*(u8 *)&D_80183340) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801835C4[])(void); + +void func_80159968(void *a0) { + D_801835C4[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80183718[])(void); + +void func_80159B70(void *a0) { + D_80183718[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80183534; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80183534); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_096/ov_SC03_096_jr_80154C24.c b/src/ov_SC03_096/ov_SC03_096_jr_80154C24.c index 2ff6ff820..e5729087e 100644 --- a/src/ov_SC03_096/ov_SC03_096_jr_80154C24.c +++ b/src/ov_SC03_096/ov_SC03_096_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80182E50[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_80199668; - -void func_80158BB0(void *arg0) { - if (D_80199668 == 0) { - D_80199668 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_80199674; -extern s32 D_80182E24[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_80199674; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80182E24[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80199678; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80199678 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_80199668; -extern s32 D_80199670; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_80199668 == 4) { - D_80199668 = 5; - } - if (D_80199670 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80182E8C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80182E8C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_80154C24", func_801594E8); - - -extern void (*D_801830A0[])(void); - -void func_80159698(void *a0) { - D_801830A0[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80182EC0)); - func_80028620(1, &(*(u8 *)&D_80182EC0) + 0x10); - func_80028620(2, &(*(u8 *)&D_80182EC0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80183144[])(void); - -void func_80159968(void *a0) { - D_80183144[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80183298[])(void); - -void func_80159B70(void *a0) { - D_80183298[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801830B4; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801830B4); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_096/ov_SC03_096_jr_801588CC.c b/src/ov_SC03_096/ov_SC03_096_jr_801588CC.c new file mode 100644 index 000000000..8c9aca354 --- /dev/null +++ b/src/ov_SC03_096/ov_SC03_096_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80182FEC; +extern u8 D_80182F5C; +extern u8 D_80182F38; +extern u8 D_80182F14; +extern u8 D_80182FC8; +extern u8 D_80182FA4; +extern u8 D_80182F80; +extern u8 D_80182EF0; +extern void func_80145934(void); +extern u8 D_8018307C; +extern u8 D_80183058; +extern u8 D_80183034; +extern u8 D_80183010; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80182474[]; +extern unsigned char D_801824A4[]; +extern unsigned char D_801824F4[]; +extern unsigned char D_80182524[]; +extern unsigned char D_80182554[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801825A4[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018266C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801826F4[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801826FC; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_80199628; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019962C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018272C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801827D4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801827F8[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801827E8; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018280C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80182818[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80182828[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80182840[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80182830; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80182854[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80182870[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80182860; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80182884[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80182898[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801828AC; +extern void (*D_801828D4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801828B4; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801828E0[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80182920[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80182924[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80182B18[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80182D88[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80182D98[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_80199660; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182DC0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80182DA0; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80182DB0; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80182E00[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80182E08[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182DD4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80182E14[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80182DE4; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_80199668; +extern s32 D_80199674; +extern s32 D_80199678; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80182E50[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_80199668; +extern int D_80199674; +extern int D_80199678; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80182E54[])(void); + extern int D_8019966C; + extern int D_80199670; + short sVar1; + + D_80182E54[*(unsigned short *)(param_1 + 2)](); + switch (D_80199668) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80199670 = 0; + D_8019966C = 0x46; + D_80199668 += 1; + break; + case 2: + if (D_8019966C == 0) { + if (SsGetMute() == 0) { + D_80199668 += 1; + } + } else { + D_8019966C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_80199668 += 1; + } + break; + case 4: + D_80199674 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019966C = 0xd2; + } else { + D_8019966C = 1; + } + break; + case 5: + D_8019966C -= 1; + if (D_8019966C == -1 || D_80199678 != 0) { + D_8019966C = 0; + D_80199668 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019966C = 0x28; + D_80199668 += 1; + break; + case 7: + if (D_8019966C == 0) { + if (SsGetMute() == 0) { + D_80199668 += 1; + } + } else { + D_8019966C -= 1; + } + break; + case 8: + D_80199670 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_80199668; + +void func_80158BB0(void *arg0) { + if (D_80199668 == 0) { + D_80199668 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_80199674; +extern s32 D_80182E24[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_80199674; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80182E24[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80199678; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80199678 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_80199668; +extern s32 D_80199670; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_80199668 == 4) { + D_80199668 = 5; + } + if (D_80199670 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80182E8C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80182E8C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_801588CC", func_801594E8); + + +extern void (*D_801830A0[])(void); + +void func_80159698(void *a0) { + D_801830A0[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80182EC0)); + func_80028620(1, &(*(u8 *)&D_80182EC0) + 0x10); + func_80028620(2, &(*(u8 *)&D_80182EC0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80183144[])(void); + +void func_80159968(void *a0) { + D_80183144[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80183298[])(void); + +void func_80159B70(void *a0) { + D_80183298[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801830B4; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801830B4); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_097/ov_SC03_097_jr_80154C24.c b/src/ov_SC03_097/ov_SC03_097_jr_80154C24.c index 0d3522e66..3c331e607 100644 --- a/src/ov_SC03_097/ov_SC03_097_jr_80154C24.c +++ b/src/ov_SC03_097/ov_SC03_097_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80188230[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A96F0; - -void func_80158BB0(void *arg0) { - if (D_801A96F0 == 0) { - D_801A96F0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A96FC; -extern s32 D_80188204[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A96FC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188204[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A9700; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A9700 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A96F0; -extern s32 D_801A96F8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A96F0 == 4) { - D_801A96F0 = 5; - } - if (D_801A96F8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018826C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018826C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_80154C24", func_801594E8); - - -extern void (*D_80188480[])(void); - -void func_80159698(void *a0) { - D_80188480[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801882A0)); - func_80028620(1, &(*(u8 *)&D_801882A0) + 0x10); - func_80028620(2, &(*(u8 *)&D_801882A0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80188524[])(void); - -void func_80159968(void *a0) { - D_80188524[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80188678[])(void); - -void func_80159B70(void *a0) { - D_80188678[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80188494; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188494); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_097/ov_SC03_097_jr_801588CC.c b/src/ov_SC03_097/ov_SC03_097_jr_801588CC.c new file mode 100644 index 000000000..5b8ea8233 --- /dev/null +++ b/src/ov_SC03_097/ov_SC03_097_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801883CC; +extern u8 D_8018833C; +extern u8 D_80188318; +extern u8 D_801882F4; +extern u8 D_801883A8; +extern u8 D_80188384; +extern u8 D_80188360; +extern u8 D_801882D0; +extern void func_80145934(void); +extern u8 D_8018845C; +extern u8 D_80188438; +extern u8 D_80188414; +extern u8 D_801883F0; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80187854[]; +extern unsigned char D_80187884[]; +extern unsigned char D_801878D4[]; +extern unsigned char D_80187904[]; +extern unsigned char D_80187934[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80187984[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80187A4C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80187AD4[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80187ADC; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A96B0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A96B4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80187B0C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80187BB4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80187BD8[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80187BC8; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80187BEC[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80187BF8[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80187C08[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80187C20[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187C10; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80187C34[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80187C50[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80187C40; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80187C64[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80187C78[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80187C8C; +extern void (*D_80187CB4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187C94; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80187CC0[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80187D00[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80187D04[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80187EF8[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80188168[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80188178[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A96E8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801881A0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80188180; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80188190; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801881E0[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801881E8[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801881B4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801881F4[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801881C4; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A96F0; +extern s32 D_801A96FC; +extern s32 D_801A9700; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188230[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A96F0; +extern int D_801A96FC; +extern int D_801A9700; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80188234[])(void); + extern int D_801A96F4; + extern int D_801A96F8; + short sVar1; + + D_80188234[*(unsigned short *)(param_1 + 2)](); + switch (D_801A96F0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A96F8 = 0; + D_801A96F4 = 0x46; + D_801A96F0 += 1; + break; + case 2: + if (D_801A96F4 == 0) { + if (SsGetMute() == 0) { + D_801A96F0 += 1; + } + } else { + D_801A96F4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A96F0 += 1; + } + break; + case 4: + D_801A96FC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A96F4 = 0xd2; + } else { + D_801A96F4 = 1; + } + break; + case 5: + D_801A96F4 -= 1; + if (D_801A96F4 == -1 || D_801A9700 != 0) { + D_801A96F4 = 0; + D_801A96F0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A96F4 = 0x28; + D_801A96F0 += 1; + break; + case 7: + if (D_801A96F4 == 0) { + if (SsGetMute() == 0) { + D_801A96F0 += 1; + } + } else { + D_801A96F4 -= 1; + } + break; + case 8: + D_801A96F8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A96F0; + +void func_80158BB0(void *arg0) { + if (D_801A96F0 == 0) { + D_801A96F0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A96FC; +extern s32 D_80188204[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A96FC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188204[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A9700; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A9700 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A96F0; +extern s32 D_801A96F8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A96F0 == 4) { + D_801A96F0 = 5; + } + if (D_801A96F8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018826C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018826C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_801588CC", func_801594E8); + + +extern void (*D_80188480[])(void); + +void func_80159698(void *a0) { + D_80188480[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801882A0)); + func_80028620(1, &(*(u8 *)&D_801882A0) + 0x10); + func_80028620(2, &(*(u8 *)&D_801882A0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80188524[])(void); + +void func_80159968(void *a0) { + D_80188524[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80188678[])(void); + +void func_80159B70(void *a0) { + D_80188678[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80188494; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188494); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_098/ov_SC03_098_jr_80154C24.c b/src/ov_SC03_098/ov_SC03_098_jr_80154C24.c index 2fa158fae..4fc4a4cd2 100644 --- a/src/ov_SC03_098/ov_SC03_098_jr_80154C24.c +++ b/src/ov_SC03_098/ov_SC03_098_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801876BC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801C4360; - -void func_80158BB0(void *arg0) { - if (D_801C4360 == 0) { - D_801C4360 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801C436C; -extern s32 D_80187690[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C436C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187690[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801C4370; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C4370 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801C4360; -extern s32 D_801C4368; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801C4360 == 4) { - D_801C4360 = 5; - } - if (D_801C4368 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801876F8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801876F8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_80154C24", func_801594E8); - - -extern void (*D_8018790C[])(void); - -void func_80159698(void *a0) { - D_8018790C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018772C)); - func_80028620(1, &(*(u8 *)&D_8018772C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018772C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801879B0[])(void); - -void func_80159968(void *a0) { - D_801879B0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80187B04[])(void); - -void func_80159B70(void *a0) { - D_80187B04[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80187920; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187920); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_098/ov_SC03_098_jr_801588CC.c b/src/ov_SC03_098/ov_SC03_098_jr_801588CC.c new file mode 100644 index 000000000..66cf1b612 --- /dev/null +++ b/src/ov_SC03_098/ov_SC03_098_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80187858; +extern u8 D_801877C8; +extern u8 D_801877A4; +extern u8 D_80187780; +extern u8 D_80187834; +extern u8 D_80187810; +extern u8 D_801877EC; +extern u8 D_8018775C; +extern void func_80145934(void); +extern u8 D_801878E8; +extern u8 D_801878C4; +extern u8 D_801878A0; +extern u8 D_8018787C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80186CE0[]; +extern unsigned char D_80186D10[]; +extern unsigned char D_80186D60[]; +extern unsigned char D_80186D90[]; +extern unsigned char D_80186DC0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80186E10[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80186ED8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80186F60[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80186F68; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801C4320; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801C4324; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80186F98; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80187040[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80187064[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80187054; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80187078[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80187084[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80187094[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801870AC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018709C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801870C0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801870DC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801870CC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801870F0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80187104[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80187118; +extern void (*D_80187140[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187120; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018714C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018718C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80187190[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80187384[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801875F4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80187604[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801C4358; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018762C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018760C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018761C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018766C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80187674[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80187640; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80187680[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80187650; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801C4360; +extern s32 D_801C436C; +extern s32 D_801C4370; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801876BC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801C4360; +extern int D_801C436C; +extern int D_801C4370; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801876C0[])(void); + extern int D_801C4364; + extern int D_801C4368; + short sVar1; + + D_801876C0[*(unsigned short *)(param_1 + 2)](); + switch (D_801C4360) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C4368 = 0; + D_801C4364 = 0x46; + D_801C4360 += 1; + break; + case 2: + if (D_801C4364 == 0) { + if (SsGetMute() == 0) { + D_801C4360 += 1; + } + } else { + D_801C4364 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C4360 += 1; + } + break; + case 4: + D_801C436C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C4364 = 0xd2; + } else { + D_801C4364 = 1; + } + break; + case 5: + D_801C4364 -= 1; + if (D_801C4364 == -1 || D_801C4370 != 0) { + D_801C4364 = 0; + D_801C4360 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C4364 = 0x28; + D_801C4360 += 1; + break; + case 7: + if (D_801C4364 == 0) { + if (SsGetMute() == 0) { + D_801C4360 += 1; + } + } else { + D_801C4364 -= 1; + } + break; + case 8: + D_801C4368 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801C4360; + +void func_80158BB0(void *arg0) { + if (D_801C4360 == 0) { + D_801C4360 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801C436C; +extern s32 D_80187690[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C436C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187690[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801C4370; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C4370 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801C4360; +extern s32 D_801C4368; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801C4360 == 4) { + D_801C4360 = 5; + } + if (D_801C4368 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801876F8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801876F8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_801588CC", func_801594E8); + + +extern void (*D_8018790C[])(void); + +void func_80159698(void *a0) { + D_8018790C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018772C)); + func_80028620(1, &(*(u8 *)&D_8018772C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018772C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801879B0[])(void); + +void func_80159968(void *a0) { + D_801879B0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80187B04[])(void); + +void func_80159B70(void *a0) { + D_80187B04[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80187920; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187920); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_099/ov_SC03_099_jr_80154C24.c b/src/ov_SC03_099/ov_SC03_099_jr_80154C24.c index 95e8bd34a..b045f99dd 100644 --- a/src/ov_SC03_099/ov_SC03_099_jr_80154C24.c +++ b/src/ov_SC03_099/ov_SC03_099_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801857BC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801BE030; - -void func_80158BB0(void *arg0) { - if (D_801BE030 == 0) { - D_801BE030 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801BE03C; -extern s32 D_80185790[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801BE03C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80185790[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801BE040; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801BE040 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801BE030; -extern s32 D_801BE038; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801BE030 == 4) { - D_801BE030 = 5; - } - if (D_801BE038 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801857F8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801857F8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_80154C24", func_801594E8); - - -extern void (*D_80185A0C[])(void); - -void func_80159698(void *a0) { - D_80185A0C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018582C)); - func_80028620(1, &(*(u8 *)&D_8018582C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018582C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80185AB0[])(void); - -void func_80159968(void *a0) { - D_80185AB0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80185C04[])(void); - -void func_80159B70(void *a0) { - D_80185C04[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80185A20; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80185A20); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_099/ov_SC03_099_jr_801588CC.c b/src/ov_SC03_099/ov_SC03_099_jr_801588CC.c new file mode 100644 index 000000000..980d5b93a --- /dev/null +++ b/src/ov_SC03_099/ov_SC03_099_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80185958; +extern u8 D_801858C8; +extern u8 D_801858A4; +extern u8 D_80185880; +extern u8 D_80185934; +extern u8 D_80185910; +extern u8 D_801858EC; +extern u8 D_8018585C; +extern void func_80145934(void); +extern u8 D_801859E8; +extern u8 D_801859C4; +extern u8 D_801859A0; +extern u8 D_8018597C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80184DE0[]; +extern unsigned char D_80184E10[]; +extern unsigned char D_80184E60[]; +extern unsigned char D_80184E90[]; +extern unsigned char D_80184EC0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80184F10[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80184FD8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80185060[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80185068; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801BDFF0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801BDFF4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80185098; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80185140[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80185164[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80185154; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80185178[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80185184[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80185194[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801851AC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018519C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801851C0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801851DC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801851CC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801851F0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80185204[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80185218; +extern void (*D_80185240[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80185220; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018524C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018528C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80185290[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80185484[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801856F4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80185704[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801BE028; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018572C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018570C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018571C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018576C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80185774[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80185740; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80185780[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80185750; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801BE030; +extern s32 D_801BE03C; +extern s32 D_801BE040; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801857BC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801BE030; +extern int D_801BE03C; +extern int D_801BE040; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801857C0[])(void); + extern int D_801BE034; + extern int D_801BE038; + short sVar1; + + D_801857C0[*(unsigned short *)(param_1 + 2)](); + switch (D_801BE030) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801BE038 = 0; + D_801BE034 = 0x46; + D_801BE030 += 1; + break; + case 2: + if (D_801BE034 == 0) { + if (SsGetMute() == 0) { + D_801BE030 += 1; + } + } else { + D_801BE034 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801BE030 += 1; + } + break; + case 4: + D_801BE03C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801BE034 = 0xd2; + } else { + D_801BE034 = 1; + } + break; + case 5: + D_801BE034 -= 1; + if (D_801BE034 == -1 || D_801BE040 != 0) { + D_801BE034 = 0; + D_801BE030 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801BE034 = 0x28; + D_801BE030 += 1; + break; + case 7: + if (D_801BE034 == 0) { + if (SsGetMute() == 0) { + D_801BE030 += 1; + } + } else { + D_801BE034 -= 1; + } + break; + case 8: + D_801BE038 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801BE030; + +void func_80158BB0(void *arg0) { + if (D_801BE030 == 0) { + D_801BE030 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801BE03C; +extern s32 D_80185790[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801BE03C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80185790[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801BE040; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801BE040 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801BE030; +extern s32 D_801BE038; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801BE030 == 4) { + D_801BE030 = 5; + } + if (D_801BE038 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801857F8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801857F8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_801588CC", func_801594E8); + + +extern void (*D_80185A0C[])(void); + +void func_80159698(void *a0) { + D_80185A0C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018582C)); + func_80028620(1, &(*(u8 *)&D_8018582C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018582C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80185AB0[])(void); + +void func_80159968(void *a0) { + D_80185AB0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80185C04[])(void); + +void func_80159B70(void *a0) { + D_80185C04[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80185A20; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80185A20); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_100/ov_SC03_100_jr_80154C24.c b/src/ov_SC03_100/ov_SC03_100_jr_80154C24.c index 8b8a02921..1b75c891b 100644 --- a/src/ov_SC03_100/ov_SC03_100_jr_80154C24.c +++ b/src/ov_SC03_100/ov_SC03_100_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80186C88[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801C72B8; - -void func_80158BB0(void *arg0) { - if (D_801C72B8 == 0) { - D_801C72B8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801C72C4; -extern s32 D_80186C5C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C72C4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80186C5C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801C72C8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C72C8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801C72B8; -extern s32 D_801C72C0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801C72B8 == 4) { - D_801C72B8 = 5; - } - if (D_801C72C0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80186CC4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80186CC4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_80154C24", func_801594E8); - - -extern void (*D_80186ED8[])(void); - -void func_80159698(void *a0) { - D_80186ED8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80186CF8)); - func_80028620(1, &(*(u8 *)&D_80186CF8) + 0x10); - func_80028620(2, &(*(u8 *)&D_80186CF8) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80186F7C[])(void); - -void func_80159968(void *a0) { - D_80186F7C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801870D0[])(void); - -void func_80159B70(void *a0) { - D_801870D0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80186EEC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186EEC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_100/ov_SC03_100_jr_801588CC.c b/src/ov_SC03_100/ov_SC03_100_jr_801588CC.c new file mode 100644 index 000000000..d7355b6df --- /dev/null +++ b/src/ov_SC03_100/ov_SC03_100_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80186E24; +extern u8 D_80186D94; +extern u8 D_80186D70; +extern u8 D_80186D4C; +extern u8 D_80186E00; +extern u8 D_80186DDC; +extern u8 D_80186DB8; +extern u8 D_80186D28; +extern void func_80145934(void); +extern u8 D_80186EB4; +extern u8 D_80186E90; +extern u8 D_80186E6C; +extern u8 D_80186E48; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801862AC[]; +extern unsigned char D_801862DC[]; +extern unsigned char D_8018632C[]; +extern unsigned char D_8018635C[]; +extern unsigned char D_8018638C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801863DC[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801864A4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018652C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80186534; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801C7278; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801C727C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80186564; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018660C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80186630[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80186620; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80186644[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80186650[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80186660[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80186678[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186668; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018668C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801866A8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186698; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801866BC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801866D0[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801866E4; +extern void (*D_8018670C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801866EC; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80186718[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80186758[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018675C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80186950[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80186BC0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80186BD0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801C72B0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186BF8[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80186BD8; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80186BE8; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80186C38[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80186C40[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186C0C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80186C4C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80186C1C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801C72B8; +extern s32 D_801C72C4; +extern s32 D_801C72C8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80186C88[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801C72B8; +extern int D_801C72C4; +extern int D_801C72C8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80186C8C[])(void); + extern int D_801C72BC; + extern int D_801C72C0; + short sVar1; + + D_80186C8C[*(unsigned short *)(param_1 + 2)](); + switch (D_801C72B8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C72C0 = 0; + D_801C72BC = 0x46; + D_801C72B8 += 1; + break; + case 2: + if (D_801C72BC == 0) { + if (SsGetMute() == 0) { + D_801C72B8 += 1; + } + } else { + D_801C72BC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C72B8 += 1; + } + break; + case 4: + D_801C72C4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C72BC = 0xd2; + } else { + D_801C72BC = 1; + } + break; + case 5: + D_801C72BC -= 1; + if (D_801C72BC == -1 || D_801C72C8 != 0) { + D_801C72BC = 0; + D_801C72B8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C72BC = 0x28; + D_801C72B8 += 1; + break; + case 7: + if (D_801C72BC == 0) { + if (SsGetMute() == 0) { + D_801C72B8 += 1; + } + } else { + D_801C72BC -= 1; + } + break; + case 8: + D_801C72C0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801C72B8; + +void func_80158BB0(void *arg0) { + if (D_801C72B8 == 0) { + D_801C72B8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801C72C4; +extern s32 D_80186C5C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C72C4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80186C5C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801C72C8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C72C8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801C72B8; +extern s32 D_801C72C0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801C72B8 == 4) { + D_801C72B8 = 5; + } + if (D_801C72C0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80186CC4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80186CC4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_801588CC", func_801594E8); + + +extern void (*D_80186ED8[])(void); + +void func_80159698(void *a0) { + D_80186ED8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80186CF8)); + func_80028620(1, &(*(u8 *)&D_80186CF8) + 0x10); + func_80028620(2, &(*(u8 *)&D_80186CF8) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80186F7C[])(void); + +void func_80159968(void *a0) { + D_80186F7C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801870D0[])(void); + +void func_80159B70(void *a0) { + D_801870D0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80186EEC; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186EEC); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_101/ov_SC03_101_jr_80154C24.c b/src/ov_SC03_101/ov_SC03_101_jr_80154C24.c index d390c7514..ede82a6c7 100644 --- a/src/ov_SC03_101/ov_SC03_101_jr_80154C24.c +++ b/src/ov_SC03_101/ov_SC03_101_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80185C64[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019CB80; - -void func_80158BB0(void *arg0) { - if (D_8019CB80 == 0) { - D_8019CB80 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019CB8C; -extern s32 D_80185C38[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019CB8C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80185C38[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019CB90; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019CB90 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019CB80; -extern s32 D_8019CB88; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019CB80 == 4) { - D_8019CB80 = 5; - } - if (D_8019CB88 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80185CA0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80185CA0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_80154C24", func_801594E8); - - -extern void (*D_80185EB4[])(void); - -void func_80159698(void *a0) { - D_80185EB4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80185CD4)); - func_80028620(1, &(*(u8 *)&D_80185CD4) + 0x10); - func_80028620(2, &(*(u8 *)&D_80185CD4) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80185F58[])(void); - -void func_80159968(void *a0) { - D_80185F58[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801860AC[])(void); - -void func_80159B70(void *a0) { - D_801860AC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80185EC8; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80185EC8); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_101/ov_SC03_101_jr_801588CC.c b/src/ov_SC03_101/ov_SC03_101_jr_801588CC.c new file mode 100644 index 000000000..1dd3dab46 --- /dev/null +++ b/src/ov_SC03_101/ov_SC03_101_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80185E00; +extern u8 D_80185D70; +extern u8 D_80185D4C; +extern u8 D_80185D28; +extern u8 D_80185DDC; +extern u8 D_80185DB8; +extern u8 D_80185D94; +extern u8 D_80185D04; +extern void func_80145934(void); +extern u8 D_80185E90; +extern u8 D_80185E6C; +extern u8 D_80185E48; +extern u8 D_80185E24; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80185288[]; +extern unsigned char D_801852B8[]; +extern unsigned char D_80185308[]; +extern unsigned char D_80185338[]; +extern unsigned char D_80185368[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801853B8[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80185480[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80185508[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80185510; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019CB40; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019CB44; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80185540; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801855E8[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018560C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801855FC; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80185620[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018562C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018563C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80185654[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80185644; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80185668[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80185684[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80185674; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80185698[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801856AC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801856C0; +extern void (*D_801856E8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801856C8; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801856F4[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80185734[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80185738[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018592C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80185B9C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80185BAC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019CB78; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80185BD4[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80185BB4; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80185BC4; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80185C14[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80185C1C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80185BE8; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80185C28[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80185BF8; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019CB80; +extern s32 D_8019CB8C; +extern s32 D_8019CB90; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80185C64[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019CB80; +extern int D_8019CB8C; +extern int D_8019CB90; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80185C68[])(void); + extern int D_8019CB84; + extern int D_8019CB88; + short sVar1; + + D_80185C68[*(unsigned short *)(param_1 + 2)](); + switch (D_8019CB80) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019CB88 = 0; + D_8019CB84 = 0x46; + D_8019CB80 += 1; + break; + case 2: + if (D_8019CB84 == 0) { + if (SsGetMute() == 0) { + D_8019CB80 += 1; + } + } else { + D_8019CB84 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019CB80 += 1; + } + break; + case 4: + D_8019CB8C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019CB84 = 0xd2; + } else { + D_8019CB84 = 1; + } + break; + case 5: + D_8019CB84 -= 1; + if (D_8019CB84 == -1 || D_8019CB90 != 0) { + D_8019CB84 = 0; + D_8019CB80 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019CB84 = 0x28; + D_8019CB80 += 1; + break; + case 7: + if (D_8019CB84 == 0) { + if (SsGetMute() == 0) { + D_8019CB80 += 1; + } + } else { + D_8019CB84 -= 1; + } + break; + case 8: + D_8019CB88 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019CB80; + +void func_80158BB0(void *arg0) { + if (D_8019CB80 == 0) { + D_8019CB80 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019CB8C; +extern s32 D_80185C38[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019CB8C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80185C38[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019CB90; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019CB90 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019CB80; +extern s32 D_8019CB88; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019CB80 == 4) { + D_8019CB80 = 5; + } + if (D_8019CB88 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80185CA0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80185CA0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_801588CC", func_801594E8); + + +extern void (*D_80185EB4[])(void); + +void func_80159698(void *a0) { + D_80185EB4[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80185CD4)); + func_80028620(1, &(*(u8 *)&D_80185CD4) + 0x10); + func_80028620(2, &(*(u8 *)&D_80185CD4) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80185F58[])(void); + +void func_80159968(void *a0) { + D_80185F58[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801860AC[])(void); + +void func_80159B70(void *a0) { + D_801860AC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80185EC8; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80185EC8); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_102/ov_SC03_102_jr_80154C24.c b/src/ov_SC03_102/ov_SC03_102_jr_80154C24.c index 62db1cd02..e3d236f15 100644 --- a/src/ov_SC03_102/ov_SC03_102_jr_80154C24.c +++ b/src/ov_SC03_102/ov_SC03_102_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018851C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B87F8; - -void func_80158BB0(void *arg0) { - if (D_801B87F8 == 0) { - D_801B87F8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B8804; -extern s32 D_801884F0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B8804; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801884F0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B8808; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B8808 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B87F8; -extern s32 D_801B8800; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B87F8 == 4) { - D_801B87F8 = 5; - } - if (D_801B8800 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80188558[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80188558; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_80154C24", func_801594E8); - - -extern void (*D_8018876C[])(void); - -void func_80159698(void *a0) { - D_8018876C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018858C)); - func_80028620(1, &(*(u8 *)&D_8018858C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018858C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80188810[])(void); - -void func_80159968(void *a0) { - D_80188810[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80188964[])(void); - -void func_80159B70(void *a0) { - D_80188964[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80188780; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188780); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_102/ov_SC03_102_jr_801588CC.c b/src/ov_SC03_102/ov_SC03_102_jr_801588CC.c new file mode 100644 index 000000000..2b8fe207b --- /dev/null +++ b/src/ov_SC03_102/ov_SC03_102_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801886B8; +extern u8 D_80188628; +extern u8 D_80188604; +extern u8 D_801885E0; +extern u8 D_80188694; +extern u8 D_80188670; +extern u8 D_8018864C; +extern u8 D_801885BC; +extern void func_80145934(void); +extern u8 D_80188748; +extern u8 D_80188724; +extern u8 D_80188700; +extern u8 D_801886DC; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80187B40[]; +extern unsigned char D_80187B70[]; +extern unsigned char D_80187BC0[]; +extern unsigned char D_80187BF0[]; +extern unsigned char D_80187C20[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80187C70[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80187D38[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80187DC0[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80187DC8; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B87B8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B87BC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80187DF8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80187EA0[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80187EC4[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80187EB4; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80187ED8[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80187EE4[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80187EF4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80187F0C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187EFC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80187F20[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80187F3C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80187F2C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80187F50[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80187F64[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80187F78; +extern void (*D_80187FA0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187F80; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80187FAC[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80187FEC[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80187FF0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801881E4[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80188454[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80188464[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B87F0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018848C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018846C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018847C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801884CC[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801884D4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801884A0; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801884E0[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801884B0; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B87F8; +extern s32 D_801B8804; +extern s32 D_801B8808; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018851C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B87F8; +extern int D_801B8804; +extern int D_801B8808; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80188520[])(void); + extern int D_801B87FC; + extern int D_801B8800; + short sVar1; + + D_80188520[*(unsigned short *)(param_1 + 2)](); + switch (D_801B87F8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B8800 = 0; + D_801B87FC = 0x46; + D_801B87F8 += 1; + break; + case 2: + if (D_801B87FC == 0) { + if (SsGetMute() == 0) { + D_801B87F8 += 1; + } + } else { + D_801B87FC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B87F8 += 1; + } + break; + case 4: + D_801B8804 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B87FC = 0xd2; + } else { + D_801B87FC = 1; + } + break; + case 5: + D_801B87FC -= 1; + if (D_801B87FC == -1 || D_801B8808 != 0) { + D_801B87FC = 0; + D_801B87F8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B87FC = 0x28; + D_801B87F8 += 1; + break; + case 7: + if (D_801B87FC == 0) { + if (SsGetMute() == 0) { + D_801B87F8 += 1; + } + } else { + D_801B87FC -= 1; + } + break; + case 8: + D_801B8800 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B87F8; + +void func_80158BB0(void *arg0) { + if (D_801B87F8 == 0) { + D_801B87F8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B8804; +extern s32 D_801884F0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B8804; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801884F0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B8808; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B8808 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B87F8; +extern s32 D_801B8800; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B87F8 == 4) { + D_801B87F8 = 5; + } + if (D_801B8800 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80188558[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80188558; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_801588CC", func_801594E8); + + +extern void (*D_8018876C[])(void); + +void func_80159698(void *a0) { + D_8018876C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018858C)); + func_80028620(1, &(*(u8 *)&D_8018858C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018858C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80188810[])(void); + +void func_80159968(void *a0) { + D_80188810[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80188964[])(void); + +void func_80159B70(void *a0) { + D_80188964[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80188780; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188780); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_103/ov_SC03_103_jr_80154C24.c b/src/ov_SC03_103/ov_SC03_103_jr_80154C24.c index d1012eda2..629c7f216 100644 --- a/src/ov_SC03_103/ov_SC03_103_jr_80154C24.c +++ b/src/ov_SC03_103/ov_SC03_103_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801864CC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801C39B0; - -void func_80158BB0(void *arg0) { - if (D_801C39B0 == 0) { - D_801C39B0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801C39BC; -extern s32 D_801864A0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C39BC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801864A0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801C39C0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C39C0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801C39B0; -extern s32 D_801C39B8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801C39B0 == 4) { - D_801C39B0 = 5; - } - if (D_801C39B8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80186508[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80186508; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_80154C24", func_801594E8); - - -extern void (*D_8018671C[])(void); - -void func_80159698(void *a0) { - D_8018671C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018653C)); - func_80028620(1, &(*(u8 *)&D_8018653C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018653C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801867C0[])(void); - -void func_80159968(void *a0) { - D_801867C0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80186914[])(void); - -void func_80159B70(void *a0) { - D_80186914[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80186730; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186730); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_103/ov_SC03_103_jr_801588CC.c b/src/ov_SC03_103/ov_SC03_103_jr_801588CC.c new file mode 100644 index 000000000..5e38757e1 --- /dev/null +++ b/src/ov_SC03_103/ov_SC03_103_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80186668; +extern u8 D_801865D8; +extern u8 D_801865B4; +extern u8 D_80186590; +extern u8 D_80186644; +extern u8 D_80186620; +extern u8 D_801865FC; +extern u8 D_8018656C; +extern void func_80145934(void); +extern u8 D_801866F8; +extern u8 D_801866D4; +extern u8 D_801866B0; +extern u8 D_8018668C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80185AF0[]; +extern unsigned char D_80185B20[]; +extern unsigned char D_80185B70[]; +extern unsigned char D_80185BA0[]; +extern unsigned char D_80185BD0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80185C20[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80185CE8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80185D70[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80185D78; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801C3970; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801C3974; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80185DA8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80185E50[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80185E74[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80185E64; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80185E88[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80185E94[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80185EA4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80185EBC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80185EAC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80185ED0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80185EEC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80185EDC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80185F00[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80185F14[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80185F28; +extern void (*D_80185F50[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80185F30; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80185F5C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80185F9C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80185FA0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80186194[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80186404[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80186414[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801C39A8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018643C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018641C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018642C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018647C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80186484[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186450; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80186490[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80186460; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801C39B0; +extern s32 D_801C39BC; +extern s32 D_801C39C0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801864CC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801C39B0; +extern int D_801C39BC; +extern int D_801C39C0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801864D0[])(void); + extern int D_801C39B4; + extern int D_801C39B8; + short sVar1; + + D_801864D0[*(unsigned short *)(param_1 + 2)](); + switch (D_801C39B0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C39B8 = 0; + D_801C39B4 = 0x46; + D_801C39B0 += 1; + break; + case 2: + if (D_801C39B4 == 0) { + if (SsGetMute() == 0) { + D_801C39B0 += 1; + } + } else { + D_801C39B4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C39B0 += 1; + } + break; + case 4: + D_801C39BC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C39B4 = 0xd2; + } else { + D_801C39B4 = 1; + } + break; + case 5: + D_801C39B4 -= 1; + if (D_801C39B4 == -1 || D_801C39C0 != 0) { + D_801C39B4 = 0; + D_801C39B0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C39B4 = 0x28; + D_801C39B0 += 1; + break; + case 7: + if (D_801C39B4 == 0) { + if (SsGetMute() == 0) { + D_801C39B0 += 1; + } + } else { + D_801C39B4 -= 1; + } + break; + case 8: + D_801C39B8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801C39B0; + +void func_80158BB0(void *arg0) { + if (D_801C39B0 == 0) { + D_801C39B0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801C39BC; +extern s32 D_801864A0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C39BC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801864A0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801C39C0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C39C0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801C39B0; +extern s32 D_801C39B8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801C39B0 == 4) { + D_801C39B0 = 5; + } + if (D_801C39B8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80186508[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80186508; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_801588CC", func_801594E8); + + +extern void (*D_8018671C[])(void); + +void func_80159698(void *a0) { + D_8018671C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018653C)); + func_80028620(1, &(*(u8 *)&D_8018653C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018653C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801867C0[])(void); + +void func_80159968(void *a0) { + D_801867C0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80186914[])(void); + +void func_80159B70(void *a0) { + D_80186914[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80186730; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186730); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_104/ov_SC03_104_jr_80154C24.c b/src/ov_SC03_104/ov_SC03_104_jr_80154C24.c index 48ccf267e..7791d2b66 100644 --- a/src/ov_SC03_104/ov_SC03_104_jr_80154C24.c +++ b/src/ov_SC03_104/ov_SC03_104_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018D05C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801BEF48; - -void func_80158BB0(void *arg0) { - if (D_801BEF48 == 0) { - D_801BEF48 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801BEF54; -extern s32 D_8018D030[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801BEF54; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018D030[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801BEF58; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801BEF58 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801BEF48; -extern s32 D_801BEF50; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801BEF48 == 4) { - D_801BEF48 = 5; - } - if (D_801BEF50 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018D098[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018D098; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_80154C24", func_801594E8); - - -extern void (*D_8018D2AC[])(void); - -void func_80159698(void *a0) { - D_8018D2AC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018D0CC)); - func_80028620(1, &(*(u8 *)&D_8018D0CC) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018D0CC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018D350[])(void); - -void func_80159968(void *a0) { - D_8018D350[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018D4A4[])(void); - -void func_80159B70(void *a0) { - D_8018D4A4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018D2C0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018D2C0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_104/ov_SC03_104_jr_801588CC.c b/src/ov_SC03_104/ov_SC03_104_jr_801588CC.c new file mode 100644 index 000000000..7b66ab725 --- /dev/null +++ b/src/ov_SC03_104/ov_SC03_104_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018D1F8; +extern u8 D_8018D168; +extern u8 D_8018D144; +extern u8 D_8018D120; +extern u8 D_8018D1D4; +extern u8 D_8018D1B0; +extern u8 D_8018D18C; +extern u8 D_8018D0FC; +extern void func_80145934(void); +extern u8 D_8018D288; +extern u8 D_8018D264; +extern u8 D_8018D240; +extern u8 D_8018D21C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018C680[]; +extern unsigned char D_8018C6B0[]; +extern unsigned char D_8018C700[]; +extern unsigned char D_8018C730[]; +extern unsigned char D_8018C760[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018C7B0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018C878[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018C900[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018C908; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801BEF08; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801BEF0C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018C938; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018C9E0[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018CA04[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018C9F4; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018CA18[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018CA24[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018CA34[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018CA4C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018CA3C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018CA60[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018CA7C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018CA6C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018CA90[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018CAA4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018CAB8; +extern void (*D_8018CAE0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018CAC0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018CAEC[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018CB2C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018CB30[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018CD24[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018CF94[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018CFA4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801BEF40; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018CFCC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018CFAC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018CFBC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018D00C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018D014[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018CFE0; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018D020[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018CFF0; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801BEF48; +extern s32 D_801BEF54; +extern s32 D_801BEF58; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018D05C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801BEF48; +extern int D_801BEF54; +extern int D_801BEF58; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018D060[])(void); + extern int D_801BEF4C; + extern int D_801BEF50; + short sVar1; + + D_8018D060[*(unsigned short *)(param_1 + 2)](); + switch (D_801BEF48) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801BEF50 = 0; + D_801BEF4C = 0x46; + D_801BEF48 += 1; + break; + case 2: + if (D_801BEF4C == 0) { + if (SsGetMute() == 0) { + D_801BEF48 += 1; + } + } else { + D_801BEF4C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801BEF48 += 1; + } + break; + case 4: + D_801BEF54 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801BEF4C = 0xd2; + } else { + D_801BEF4C = 1; + } + break; + case 5: + D_801BEF4C -= 1; + if (D_801BEF4C == -1 || D_801BEF58 != 0) { + D_801BEF4C = 0; + D_801BEF48 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801BEF4C = 0x28; + D_801BEF48 += 1; + break; + case 7: + if (D_801BEF4C == 0) { + if (SsGetMute() == 0) { + D_801BEF48 += 1; + } + } else { + D_801BEF4C -= 1; + } + break; + case 8: + D_801BEF50 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801BEF48; + +void func_80158BB0(void *arg0) { + if (D_801BEF48 == 0) { + D_801BEF48 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801BEF54; +extern s32 D_8018D030[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801BEF54; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018D030[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801BEF58; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801BEF58 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801BEF48; +extern s32 D_801BEF50; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801BEF48 == 4) { + D_801BEF48 = 5; + } + if (D_801BEF50 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018D098[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018D098; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_801588CC", func_801594E8); + + +extern void (*D_8018D2AC[])(void); + +void func_80159698(void *a0) { + D_8018D2AC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018D0CC)); + func_80028620(1, &(*(u8 *)&D_8018D0CC) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018D0CC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018D350[])(void); + +void func_80159968(void *a0) { + D_8018D350[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018D4A4[])(void); + +void func_80159B70(void *a0) { + D_8018D4A4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018D2C0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018D2C0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_105/ov_SC03_105_jr_80154C24.c b/src/ov_SC03_105/ov_SC03_105_jr_80154C24.c index 155fbde3c..e89b73154 100644 --- a/src/ov_SC03_105/ov_SC03_105_jr_80154C24.c +++ b/src/ov_SC03_105/ov_SC03_105_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018C6E4[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B84D8; - -void func_80158BB0(void *arg0) { - if (D_801B84D8 == 0) { - D_801B84D8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B84E4; -extern s32 D_8018C6B8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B84E4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018C6B8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B84E8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B84E8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B84D8; -extern s32 D_801B84E0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B84D8 == 4) { - D_801B84D8 = 5; - } - if (D_801B84E0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018C720[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018C720; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_80154C24", func_801594E8); - - -extern void (*D_8018C934[])(void); - -void func_80159698(void *a0) { - D_8018C934[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018C754)); - func_80028620(1, &(*(u8 *)&D_8018C754) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018C754) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018C9D8[])(void); - -void func_80159968(void *a0) { - D_8018C9D8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018CB2C[])(void); - -void func_80159B70(void *a0) { - D_8018CB2C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018C948; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018C948); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_105/ov_SC03_105_jr_801588CC.c b/src/ov_SC03_105/ov_SC03_105_jr_801588CC.c new file mode 100644 index 000000000..8b78e2c3a --- /dev/null +++ b/src/ov_SC03_105/ov_SC03_105_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018C880; +extern u8 D_8018C7F0; +extern u8 D_8018C7CC; +extern u8 D_8018C7A8; +extern u8 D_8018C85C; +extern u8 D_8018C838; +extern u8 D_8018C814; +extern u8 D_8018C784; +extern void func_80145934(void); +extern u8 D_8018C910; +extern u8 D_8018C8EC; +extern u8 D_8018C8C8; +extern u8 D_8018C8A4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018BD08[]; +extern unsigned char D_8018BD38[]; +extern unsigned char D_8018BD88[]; +extern unsigned char D_8018BDB8[]; +extern unsigned char D_8018BDE8[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018BE38[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018BF00[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018BF88[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018BF90; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B8498; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B849C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018BFC0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018C068[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018C08C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018C07C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018C0A0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018C0AC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018C0BC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018C0D4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018C0C4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018C0E8[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018C104[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018C0F4; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018C118[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018C12C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018C140; +extern void (*D_8018C168[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018C148; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018C174[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018C1B4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018C1B8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018C3AC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018C61C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018C62C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B84D0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018C654[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018C634; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018C644; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018C694[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018C69C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018C668; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018C6A8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018C678; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B84D8; +extern s32 D_801B84E4; +extern s32 D_801B84E8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018C6E4[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B84D8; +extern int D_801B84E4; +extern int D_801B84E8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018C6E8[])(void); + extern int D_801B84DC; + extern int D_801B84E0; + short sVar1; + + D_8018C6E8[*(unsigned short *)(param_1 + 2)](); + switch (D_801B84D8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B84E0 = 0; + D_801B84DC = 0x46; + D_801B84D8 += 1; + break; + case 2: + if (D_801B84DC == 0) { + if (SsGetMute() == 0) { + D_801B84D8 += 1; + } + } else { + D_801B84DC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B84D8 += 1; + } + break; + case 4: + D_801B84E4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B84DC = 0xd2; + } else { + D_801B84DC = 1; + } + break; + case 5: + D_801B84DC -= 1; + if (D_801B84DC == -1 || D_801B84E8 != 0) { + D_801B84DC = 0; + D_801B84D8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B84DC = 0x28; + D_801B84D8 += 1; + break; + case 7: + if (D_801B84DC == 0) { + if (SsGetMute() == 0) { + D_801B84D8 += 1; + } + } else { + D_801B84DC -= 1; + } + break; + case 8: + D_801B84E0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B84D8; + +void func_80158BB0(void *arg0) { + if (D_801B84D8 == 0) { + D_801B84D8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B84E4; +extern s32 D_8018C6B8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B84E4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018C6B8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B84E8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B84E8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B84D8; +extern s32 D_801B84E0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B84D8 == 4) { + D_801B84D8 = 5; + } + if (D_801B84E0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018C720[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018C720; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_801588CC", func_801594E8); + + +extern void (*D_8018C934[])(void); + +void func_80159698(void *a0) { + D_8018C934[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018C754)); + func_80028620(1, &(*(u8 *)&D_8018C754) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018C754) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018C9D8[])(void); + +void func_80159968(void *a0) { + D_8018C9D8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018CB2C[])(void); + +void func_80159B70(void *a0) { + D_8018CB2C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018C948; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018C948); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_108/ov_SC03_108_jr_80154C24.c b/src/ov_SC03_108/ov_SC03_108_jr_80154C24.c index ac2e97e56..12cf421e6 100644 --- a/src/ov_SC03_108/ov_SC03_108_jr_80154C24.c +++ b/src/ov_SC03_108/ov_SC03_108_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018303C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A07C8; - -void func_80158BB0(void *arg0) { - if (D_801A07C8 == 0) { - D_801A07C8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A07D4; -extern s32 D_80183010[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A07D4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80183010[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A07D8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A07D8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A07C8; -extern s32 D_801A07D0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A07C8 == 4) { - D_801A07C8 = 5; - } - if (D_801A07D0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80183078[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80183078; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_80154C24", func_801594E8); - - -extern void (*D_8018328C[])(void); - -void func_80159698(void *a0) { - D_8018328C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801830AC)); - func_80028620(1, &(*(u8 *)&D_801830AC) + 0x10); - func_80028620(2, &(*(u8 *)&D_801830AC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80183330[])(void); - -void func_80159968(void *a0) { - D_80183330[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80183484[])(void); - -void func_80159B70(void *a0) { - D_80183484[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801832A0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801832A0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_108/ov_SC03_108_jr_801588CC.c b/src/ov_SC03_108/ov_SC03_108_jr_801588CC.c new file mode 100644 index 000000000..fc367f8bf --- /dev/null +++ b/src/ov_SC03_108/ov_SC03_108_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801831D8; +extern u8 D_80183148; +extern u8 D_80183124; +extern u8 D_80183100; +extern u8 D_801831B4; +extern u8 D_80183190; +extern u8 D_8018316C; +extern u8 D_801830DC; +extern void func_80145934(void); +extern u8 D_80183268; +extern u8 D_80183244; +extern u8 D_80183220; +extern u8 D_801831FC; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80182660[]; +extern unsigned char D_80182690[]; +extern unsigned char D_801826E0[]; +extern unsigned char D_80182710[]; +extern unsigned char D_80182740[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80182790[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80182858[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801828E0[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801828E8; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A0788; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A078C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80182918; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801829C0[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801829E4[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801829D4; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801829F8[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80182A04[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80182A14[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80182A2C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80182A1C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80182A40[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80182A5C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80182A4C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80182A70[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80182A84[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80182A98; +extern void (*D_80182AC0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80182AA0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80182ACC[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80182B0C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80182B10[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80182D04[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80182F74[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80182F84[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A07C0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182FAC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80182F8C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80182F9C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80182FEC[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80182FF4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182FC0; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80183000[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80182FD0; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A07C8; +extern s32 D_801A07D4; +extern s32 D_801A07D8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018303C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A07C8; +extern int D_801A07D4; +extern int D_801A07D8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80183040[])(void); + extern int D_801A07CC; + extern int D_801A07D0; + short sVar1; + + D_80183040[*(unsigned short *)(param_1 + 2)](); + switch (D_801A07C8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A07D0 = 0; + D_801A07CC = 0x46; + D_801A07C8 += 1; + break; + case 2: + if (D_801A07CC == 0) { + if (SsGetMute() == 0) { + D_801A07C8 += 1; + } + } else { + D_801A07CC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A07C8 += 1; + } + break; + case 4: + D_801A07D4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A07CC = 0xd2; + } else { + D_801A07CC = 1; + } + break; + case 5: + D_801A07CC -= 1; + if (D_801A07CC == -1 || D_801A07D8 != 0) { + D_801A07CC = 0; + D_801A07C8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A07CC = 0x28; + D_801A07C8 += 1; + break; + case 7: + if (D_801A07CC == 0) { + if (SsGetMute() == 0) { + D_801A07C8 += 1; + } + } else { + D_801A07CC -= 1; + } + break; + case 8: + D_801A07D0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A07C8; + +void func_80158BB0(void *arg0) { + if (D_801A07C8 == 0) { + D_801A07C8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A07D4; +extern s32 D_80183010[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A07D4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80183010[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A07D8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A07D8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A07C8; +extern s32 D_801A07D0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A07C8 == 4) { + D_801A07C8 = 5; + } + if (D_801A07D0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80183078[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80183078; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_801588CC", func_801594E8); + + +extern void (*D_8018328C[])(void); + +void func_80159698(void *a0) { + D_8018328C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801830AC)); + func_80028620(1, &(*(u8 *)&D_801830AC) + 0x10); + func_80028620(2, &(*(u8 *)&D_801830AC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80183330[])(void); + +void func_80159968(void *a0) { + D_80183330[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80183484[])(void); + +void func_80159B70(void *a0) { + D_80183484[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801832A0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801832A0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_109/ov_SC03_109_jr_80154C24.c b/src/ov_SC03_109/ov_SC03_109_jr_80154C24.c index 364fd3429..1915ae147 100644 --- a/src/ov_SC03_109/ov_SC03_109_jr_80154C24.c +++ b/src/ov_SC03_109/ov_SC03_109_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801806E8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801991D8; - -void func_80158BB0(void *arg0) { - if (D_801991D8 == 0) { - D_801991D8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801991E4; -extern s32 D_801806BC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801991E4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801806BC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801991E8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801991E8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801991D8; -extern s32 D_801991E0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801991D8 == 4) { - D_801991D8 = 5; - } - if (D_801991E0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80180724[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80180724; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_80154C24", func_801594E8); - - -extern void (*D_80180938[])(void); - -void func_80159698(void *a0) { - D_80180938[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180758)); - func_80028620(1, &(*(u8 *)&D_80180758) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180758) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801809DC[])(void); - -void func_80159968(void *a0) { - D_801809DC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80180B30[])(void); - -void func_80159B70(void *a0) { - D_80180B30[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018094C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018094C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_109/ov_SC03_109_jr_801588CC.c b/src/ov_SC03_109/ov_SC03_109_jr_801588CC.c new file mode 100644 index 000000000..c5c45e238 --- /dev/null +++ b/src/ov_SC03_109/ov_SC03_109_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80180884; +extern u8 D_801807F4; +extern u8 D_801807D0; +extern u8 D_801807AC; +extern u8 D_80180860; +extern u8 D_8018083C; +extern u8 D_80180818; +extern u8 D_80180788; +extern void func_80145934(void); +extern u8 D_80180914; +extern u8 D_801808F0; +extern u8 D_801808CC; +extern u8 D_801808A8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8017FD0C[]; +extern unsigned char D_8017FD3C[]; +extern unsigned char D_8017FD8C[]; +extern unsigned char D_8017FDBC[]; +extern unsigned char D_8017FDEC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8017FE3C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8017FF04[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8017FF8C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8017FF94; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_80199198; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019919C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8017FFC4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018006C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180090[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80180080; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801800A4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801800B0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801800C0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801800D8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801800C8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801800EC[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80180108[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801800F8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018011C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80180130[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80180144; +extern void (*D_8018016C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018014C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80180178[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801801B8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801801BC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801803B0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80180620[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80180630[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801991D0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180658[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180638; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180648; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180698[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801806A0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018066C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801806AC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018067C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801991D8; +extern s32 D_801991E4; +extern s32 D_801991E8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801806E8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801991D8; +extern int D_801991E4; +extern int D_801991E8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801806EC[])(void); + extern int D_801991DC; + extern int D_801991E0; + short sVar1; + + D_801806EC[*(unsigned short *)(param_1 + 2)](); + switch (D_801991D8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801991E0 = 0; + D_801991DC = 0x46; + D_801991D8 += 1; + break; + case 2: + if (D_801991DC == 0) { + if (SsGetMute() == 0) { + D_801991D8 += 1; + } + } else { + D_801991DC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801991D8 += 1; + } + break; + case 4: + D_801991E4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801991DC = 0xd2; + } else { + D_801991DC = 1; + } + break; + case 5: + D_801991DC -= 1; + if (D_801991DC == -1 || D_801991E8 != 0) { + D_801991DC = 0; + D_801991D8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801991DC = 0x28; + D_801991D8 += 1; + break; + case 7: + if (D_801991DC == 0) { + if (SsGetMute() == 0) { + D_801991D8 += 1; + } + } else { + D_801991DC -= 1; + } + break; + case 8: + D_801991E0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801991D8; + +void func_80158BB0(void *arg0) { + if (D_801991D8 == 0) { + D_801991D8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801991E4; +extern s32 D_801806BC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801991E4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801806BC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801991E8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801991E8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801991D8; +extern s32 D_801991E0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801991D8 == 4) { + D_801991D8 = 5; + } + if (D_801991E0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80180724[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80180724; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_801588CC", func_801594E8); + + +extern void (*D_80180938[])(void); + +void func_80159698(void *a0) { + D_80180938[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180758)); + func_80028620(1, &(*(u8 *)&D_80180758) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180758) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801809DC[])(void); + +void func_80159968(void *a0) { + D_801809DC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80180B30[])(void); + +void func_80159B70(void *a0) { + D_80180B30[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018094C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018094C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_110/ov_SC03_110_jr_80154C24.c b/src/ov_SC03_110/ov_SC03_110_jr_80154C24.c index 8e212c26d..530191c29 100644 --- a/src/ov_SC03_110/ov_SC03_110_jr_80154C24.c +++ b/src/ov_SC03_110/ov_SC03_110_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80184108[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A0F80; - -void func_80158BB0(void *arg0) { - if (D_801A0F80 == 0) { - D_801A0F80 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A0F8C; -extern s32 D_801840DC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A0F8C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801840DC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A0F90; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A0F90 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A0F80; -extern s32 D_801A0F88; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A0F80 == 4) { - D_801A0F80 = 5; - } - if (D_801A0F88 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184144[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184144; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_80154C24", func_801594E8); - - -extern void (*D_80184358[])(void); - -void func_80159698(void *a0) { - D_80184358[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80184178)); - func_80028620(1, &(*(u8 *)&D_80184178) + 0x10); - func_80028620(2, &(*(u8 *)&D_80184178) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801843FC[])(void); - -void func_80159968(void *a0) { - D_801843FC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80184550[])(void); - -void func_80159B70(void *a0) { - D_80184550[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018436C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018436C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_110/ov_SC03_110_jr_801588CC.c b/src/ov_SC03_110/ov_SC03_110_jr_801588CC.c new file mode 100644 index 000000000..1a9e7179c --- /dev/null +++ b/src/ov_SC03_110/ov_SC03_110_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801842A4; +extern u8 D_80184214; +extern u8 D_801841F0; +extern u8 D_801841CC; +extern u8 D_80184280; +extern u8 D_8018425C; +extern u8 D_80184238; +extern u8 D_801841A8; +extern void func_80145934(void); +extern u8 D_80184334; +extern u8 D_80184310; +extern u8 D_801842EC; +extern u8 D_801842C8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018372C[]; +extern unsigned char D_8018375C[]; +extern unsigned char D_801837AC[]; +extern unsigned char D_801837DC[]; +extern unsigned char D_8018380C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018385C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80183924[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801839AC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801839B4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A0F40; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A0F44; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801839E4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80183A8C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80183AB0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80183AA0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80183AC4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80183AD0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80183AE0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80183AF8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183AE8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80183B0C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80183B28[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183B18; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80183B3C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80183B50[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80183B64; +extern void (*D_80183B8C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183B6C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80183B98[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80183BD8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80183BDC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80183DD0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184040[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184050[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A0F78; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184078[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80184058; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80184068; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801840B8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801840C0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018408C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801840CC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018409C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A0F80; +extern s32 D_801A0F8C; +extern s32 D_801A0F90; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184108[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A0F80; +extern int D_801A0F8C; +extern int D_801A0F90; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018410C[])(void); + extern int D_801A0F84; + extern int D_801A0F88; + short sVar1; + + D_8018410C[*(unsigned short *)(param_1 + 2)](); + switch (D_801A0F80) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A0F88 = 0; + D_801A0F84 = 0x46; + D_801A0F80 += 1; + break; + case 2: + if (D_801A0F84 == 0) { + if (SsGetMute() == 0) { + D_801A0F80 += 1; + } + } else { + D_801A0F84 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A0F80 += 1; + } + break; + case 4: + D_801A0F8C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A0F84 = 0xd2; + } else { + D_801A0F84 = 1; + } + break; + case 5: + D_801A0F84 -= 1; + if (D_801A0F84 == -1 || D_801A0F90 != 0) { + D_801A0F84 = 0; + D_801A0F80 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A0F84 = 0x28; + D_801A0F80 += 1; + break; + case 7: + if (D_801A0F84 == 0) { + if (SsGetMute() == 0) { + D_801A0F80 += 1; + } + } else { + D_801A0F84 -= 1; + } + break; + case 8: + D_801A0F88 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A0F80; + +void func_80158BB0(void *arg0) { + if (D_801A0F80 == 0) { + D_801A0F80 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A0F8C; +extern s32 D_801840DC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A0F8C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801840DC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A0F90; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A0F90 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A0F80; +extern s32 D_801A0F88; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A0F80 == 4) { + D_801A0F80 = 5; + } + if (D_801A0F88 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184144[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184144; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_801588CC", func_801594E8); + + +extern void (*D_80184358[])(void); + +void func_80159698(void *a0) { + D_80184358[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80184178)); + func_80028620(1, &(*(u8 *)&D_80184178) + 0x10); + func_80028620(2, &(*(u8 *)&D_80184178) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801843FC[])(void); + +void func_80159968(void *a0) { + D_801843FC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80184550[])(void); + +void func_80159B70(void *a0) { + D_80184550[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018436C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018436C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_111/ov_SC03_111_jr_80154C24.c b/src/ov_SC03_111/ov_SC03_111_jr_80154C24.c index 0a6fc4aaa..be7380787 100644 --- a/src/ov_SC03_111/ov_SC03_111_jr_80154C24.c +++ b/src/ov_SC03_111/ov_SC03_111_jr_80154C24.c @@ -1682,342 +1682,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80186CBC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B8488; - -void func_80158BB0(void *arg0) { - if (D_801B8488 == 0) { - D_801B8488 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B8494; -extern s32 D_80186C90[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B8494; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80186C90[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B8498; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B8498 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B8488; -extern s32 D_801B8490; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B8488 == 4) { - D_801B8488 = 5; - } - if (D_801B8490 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80186CF8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80186CF8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_80154C24", func_801594E8); - - -extern void (*D_80186F0C[])(void); - -void func_80159698(void *a0) { - D_80186F0C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80186D2C)); - func_80028620(1, &(*(u8 *)&D_80186D2C) + 0x10); - func_80028620(2, &(*(u8 *)&D_80186D2C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80186FB0[])(void); - -void func_80159968(void *a0) { - D_80186FB0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80187104[])(void); - -void func_80159B70(void *a0) { - D_80187104[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80186F20; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186F20); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_111/ov_SC03_111_jr_801588CC.c b/src/ov_SC03_111/ov_SC03_111_jr_801588CC.c new file mode 100644 index 000000000..5ba8bc38e --- /dev/null +++ b/src/ov_SC03_111/ov_SC03_111_jr_801588CC.c @@ -0,0 +1,1536 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +typedef struct { + u8 pad00[0x12]; + u16 unk12; /* 0x12 */ +} Sub_80155800_80155800; +typedef struct { + u8 pad00[0x20]; + Sub_80155800_80155800 *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + s32 unk44; /* 0x44 */ + u8 pad48[0xB8 - 0x48]; + u16 unkB8; /* 0xB8 */ + u8 padBA[0x1A8 - 0xBA]; + u8 unk1A8; /* 0x1A8 */ + u8 unk1A9; /* 0x1A9 */ + u8 unk1AA; /* 0x1AA */ + u8 pad1AB[0x1C0 - 0x1AB]; + u8 unk1C0; /* 0x1C0 */ + u8 pad1C1[0x234 - 0x1C1]; + u8 unk234; /* 0x234 */ +} Ent_80155800_80155800; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80186E58; +extern u8 D_80186DC8; +extern u8 D_80186DA4; +extern u8 D_80186D80; +extern u8 D_80186E34; +extern u8 D_80186E10; +extern u8 D_80186DEC; +extern u8 D_80186D5C; +extern void func_80145934(void); +extern u8 D_80186EE8; +extern u8 D_80186EC4; +extern u8 D_80186EA0; +extern u8 D_80186E7C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801862E0[]; +extern unsigned char D_80186310[]; +extern unsigned char D_80186360[]; +extern unsigned char D_80186390[]; +extern unsigned char D_801863C0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80186410[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801864D8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80186560[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80186568; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B8448; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B844C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80186598; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80186640[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80186664[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80186654; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80186678[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80186684[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80186694[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801866AC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018669C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801866C0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801866DC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801866CC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801866F0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80186704[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80186718; +extern void (*D_80186740[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186720; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018674C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018678C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80186790[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80186984[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80186BF4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80186C04[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B8480; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186C2C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80186C0C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80186C1C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80186C6C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80186C74[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186C40; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80186C80[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80186C50; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B8488; +extern s32 D_801B8494; +extern s32 D_801B8498; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80186CBC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B8488; +extern int D_801B8494; +extern int D_801B8498; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80186CC0[])(void); + extern int D_801B848C; + extern int D_801B8490; + short sVar1; + + D_80186CC0[*(unsigned short *)(param_1 + 2)](); + switch (D_801B8488) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B8490 = 0; + D_801B848C = 0x46; + D_801B8488 += 1; + break; + case 2: + if (D_801B848C == 0) { + if (SsGetMute() == 0) { + D_801B8488 += 1; + } + } else { + D_801B848C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B8488 += 1; + } + break; + case 4: + D_801B8494 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B848C = 0xd2; + } else { + D_801B848C = 1; + } + break; + case 5: + D_801B848C -= 1; + if (D_801B848C == -1 || D_801B8498 != 0) { + D_801B848C = 0; + D_801B8488 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B848C = 0x28; + D_801B8488 += 1; + break; + case 7: + if (D_801B848C == 0) { + if (SsGetMute() == 0) { + D_801B8488 += 1; + } + } else { + D_801B848C -= 1; + } + break; + case 8: + D_801B8490 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B8488; + +void func_80158BB0(void *arg0) { + if (D_801B8488 == 0) { + D_801B8488 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B8494; +extern s32 D_80186C90[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B8494; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80186C90[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B8498; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B8498 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B8488; +extern s32 D_801B8490; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B8488 == 4) { + D_801B8488 = 5; + } + if (D_801B8490 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80186CF8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80186CF8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_801588CC", func_801594E8); + + +extern void (*D_80186F0C[])(void); + +void func_80159698(void *a0) { + D_80186F0C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80186D2C)); + func_80028620(1, &(*(u8 *)&D_80186D2C) + 0x10); + func_80028620(2, &(*(u8 *)&D_80186D2C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80186FB0[])(void); + +void func_80159968(void *a0) { + D_80186FB0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80187104[])(void); + +void func_80159B70(void *a0) { + D_80187104[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80186F20; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186F20); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_112/ov_SC03_112_jr_80154C24.c b/src/ov_SC03_112/ov_SC03_112_jr_80154C24.c index 72664acd4..de3e5eb67 100644 --- a/src/ov_SC03_112/ov_SC03_112_jr_80154C24.c +++ b/src/ov_SC03_112/ov_SC03_112_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80187AC4[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801ABCE8; - -void func_80158BB0(void *arg0) { - if (D_801ABCE8 == 0) { - D_801ABCE8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801ABCF4; -extern s32 D_80187A98[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801ABCF4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187A98[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801ABCF8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801ABCF8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801ABCE8; -extern s32 D_801ABCF0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801ABCE8 == 4) { - D_801ABCE8 = 5; - } - if (D_801ABCF0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80187B00[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80187B00; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80154C24", func_801594E8); - - -extern void (*D_80187D14[])(void); - -void func_80159698(void *a0) { - D_80187D14[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80187B34)); - func_80028620(1, &(*(u8 *)&D_80187B34) + 0x10); - func_80028620(2, &(*(u8 *)&D_80187B34) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80187DB8[])(void); - -void func_80159968(void *a0) { - D_80187DB8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80187F0C[])(void); - -void func_80159B70(void *a0) { - D_80187F0C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80187D28; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187D28); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_112/ov_SC03_112_jr_801588CC.c b/src/ov_SC03_112/ov_SC03_112_jr_801588CC.c new file mode 100644 index 000000000..f7a9cfc96 --- /dev/null +++ b/src/ov_SC03_112/ov_SC03_112_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80187C60; +extern u8 D_80187BD0; +extern u8 D_80187BAC; +extern u8 D_80187B88; +extern u8 D_80187C3C; +extern u8 D_80187C18; +extern u8 D_80187BF4; +extern u8 D_80187B64; +extern void func_80145934(void); +extern u8 D_80187CF0; +extern u8 D_80187CCC; +extern u8 D_80187CA8; +extern u8 D_80187C84; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801870E8[]; +extern unsigned char D_80187118[]; +extern unsigned char D_80187168[]; +extern unsigned char D_80187198[]; +extern unsigned char D_801871C8[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80187218[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801872E0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80187368[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80187370; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801ABCA8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801ABCAC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801873A0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80187448[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018746C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018745C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80187480[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018748C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018749C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801874B4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801874A4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801874C8[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801874E4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801874D4; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801874F8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018750C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80187520; +extern void (*D_80187548[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187528; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80187554[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80187594[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80187598[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018778C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801879FC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80187A0C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801ABCE0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80187A34[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80187A14; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80187A24; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80187A74[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80187A7C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80187A48; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80187A88[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80187A58; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801ABCE8; +extern s32 D_801ABCF4; +extern s32 D_801ABCF8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187AC4[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801ABCE8; +extern int D_801ABCF4; +extern int D_801ABCF8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80187AC8[])(void); + extern int D_801ABCEC; + extern int D_801ABCF0; + short sVar1; + + D_80187AC8[*(unsigned short *)(param_1 + 2)](); + switch (D_801ABCE8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801ABCF0 = 0; + D_801ABCEC = 0x46; + D_801ABCE8 += 1; + break; + case 2: + if (D_801ABCEC == 0) { + if (SsGetMute() == 0) { + D_801ABCE8 += 1; + } + } else { + D_801ABCEC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801ABCE8 += 1; + } + break; + case 4: + D_801ABCF4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801ABCEC = 0xd2; + } else { + D_801ABCEC = 1; + } + break; + case 5: + D_801ABCEC -= 1; + if (D_801ABCEC == -1 || D_801ABCF8 != 0) { + D_801ABCEC = 0; + D_801ABCE8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801ABCEC = 0x28; + D_801ABCE8 += 1; + break; + case 7: + if (D_801ABCEC == 0) { + if (SsGetMute() == 0) { + D_801ABCE8 += 1; + } + } else { + D_801ABCEC -= 1; + } + break; + case 8: + D_801ABCF0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801ABCE8; + +void func_80158BB0(void *arg0) { + if (D_801ABCE8 == 0) { + D_801ABCE8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801ABCF4; +extern s32 D_80187A98[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801ABCF4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187A98[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801ABCF8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801ABCF8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801ABCE8; +extern s32 D_801ABCF0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801ABCE8 == 4) { + D_801ABCE8 = 5; + } + if (D_801ABCF0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80187B00[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80187B00; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_801588CC", func_801594E8); + + +extern void (*D_80187D14[])(void); + +void func_80159698(void *a0) { + D_80187D14[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80187B34)); + func_80028620(1, &(*(u8 *)&D_80187B34) + 0x10); + func_80028620(2, &(*(u8 *)&D_80187B34) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80187DB8[])(void); + +void func_80159968(void *a0) { + D_80187DB8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80187F0C[])(void); + +void func_80159B70(void *a0) { + D_80187F0C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80187D28; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187D28); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_113/ov_SC03_113_jr_80154C24.c b/src/ov_SC03_113/ov_SC03_113_jr_80154C24.c index eccdfce77..942a8c8b1 100644 --- a/src/ov_SC03_113/ov_SC03_113_jr_80154C24.c +++ b/src/ov_SC03_113/ov_SC03_113_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80185174[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A4878; - -void func_80158BB0(void *arg0) { - if (D_801A4878 == 0) { - D_801A4878 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A4884; -extern s32 D_80185148[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A4884; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80185148[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A4888; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A4888 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A4878; -extern s32 D_801A4880; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A4878 == 4) { - D_801A4878 = 5; - } - if (D_801A4880 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801851B0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801851B0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_80154C24", func_801594E8); - - -extern void (*D_801853C4[])(void); - -void func_80159698(void *a0) { - D_801853C4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801851E4)); - func_80028620(1, &(*(u8 *)&D_801851E4) + 0x10); - func_80028620(2, &(*(u8 *)&D_801851E4) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80185468[])(void); - -void func_80159968(void *a0) { - D_80185468[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801855BC[])(void); - -void func_80159B70(void *a0) { - D_801855BC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801853D8; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801853D8); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_113/ov_SC03_113_jr_801588CC.c b/src/ov_SC03_113/ov_SC03_113_jr_801588CC.c new file mode 100644 index 000000000..5929bb9ce --- /dev/null +++ b/src/ov_SC03_113/ov_SC03_113_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80185310; +extern u8 D_80185280; +extern u8 D_8018525C; +extern u8 D_80185238; +extern u8 D_801852EC; +extern u8 D_801852C8; +extern u8 D_801852A4; +extern u8 D_80185214; +extern void func_80145934(void); +extern u8 D_801853A0; +extern u8 D_8018537C; +extern u8 D_80185358; +extern u8 D_80185334; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80184798[]; +extern unsigned char D_801847C8[]; +extern unsigned char D_80184818[]; +extern unsigned char D_80184848[]; +extern unsigned char D_80184878[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801848C8[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80184990[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80184A18[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80184A20; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A4838; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A483C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80184A50; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80184AF8[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80184B1C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80184B0C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80184B30[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80184B3C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80184B4C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80184B64[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80184B54; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80184B78[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80184B94[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80184B84; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80184BA8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80184BBC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80184BD0; +extern void (*D_80184BF8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80184BD8; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80184C04[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80184C44[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80184C48[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80184E3C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801850AC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801850BC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A4870; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801850E4[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801850C4; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801850D4; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80185124[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018512C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801850F8; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80185138[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80185108; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A4878; +extern s32 D_801A4884; +extern s32 D_801A4888; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80185174[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A4878; +extern int D_801A4884; +extern int D_801A4888; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80185178[])(void); + extern int D_801A487C; + extern int D_801A4880; + short sVar1; + + D_80185178[*(unsigned short *)(param_1 + 2)](); + switch (D_801A4878) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A4880 = 0; + D_801A487C = 0x46; + D_801A4878 += 1; + break; + case 2: + if (D_801A487C == 0) { + if (SsGetMute() == 0) { + D_801A4878 += 1; + } + } else { + D_801A487C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A4878 += 1; + } + break; + case 4: + D_801A4884 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A487C = 0xd2; + } else { + D_801A487C = 1; + } + break; + case 5: + D_801A487C -= 1; + if (D_801A487C == -1 || D_801A4888 != 0) { + D_801A487C = 0; + D_801A4878 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A487C = 0x28; + D_801A4878 += 1; + break; + case 7: + if (D_801A487C == 0) { + if (SsGetMute() == 0) { + D_801A4878 += 1; + } + } else { + D_801A487C -= 1; + } + break; + case 8: + D_801A4880 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A4878; + +void func_80158BB0(void *arg0) { + if (D_801A4878 == 0) { + D_801A4878 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A4884; +extern s32 D_80185148[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A4884; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80185148[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A4888; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A4888 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A4878; +extern s32 D_801A4880; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A4878 == 4) { + D_801A4878 = 5; + } + if (D_801A4880 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801851B0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801851B0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_801588CC", func_801594E8); + + +extern void (*D_801853C4[])(void); + +void func_80159698(void *a0) { + D_801853C4[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801851E4)); + func_80028620(1, &(*(u8 *)&D_801851E4) + 0x10); + func_80028620(2, &(*(u8 *)&D_801851E4) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80185468[])(void); + +void func_80159968(void *a0) { + D_80185468[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801855BC[])(void); + +void func_80159B70(void *a0) { + D_801855BC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801853D8; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801853D8); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_114/ov_SC03_114_jr_80154C24.c b/src/ov_SC03_114/ov_SC03_114_jr_80154C24.c index 55638ac0f..98b6c3198 100644 --- a/src/ov_SC03_114/ov_SC03_114_jr_80154C24.c +++ b/src/ov_SC03_114/ov_SC03_114_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180DDC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A8510; - -void func_80158BB0(void *arg0) { - if (D_801A8510 == 0) { - D_801A8510 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A851C; -extern s32 D_80180DB0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A851C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180DB0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A8520; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A8520 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A8510; -extern s32 D_801A8518; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A8510 == 4) { - D_801A8510 = 5; - } - if (D_801A8518 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80180E18[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80180E18; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_80154C24", func_801594E8); - - -extern void (*D_8018102C[])(void); - -void func_80159698(void *a0) { - D_8018102C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180E4C)); - func_80028620(1, &(*(u8 *)&D_80180E4C) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180E4C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801810D0[])(void); - -void func_80159968(void *a0) { - D_801810D0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80181224[])(void); - -void func_80159B70(void *a0) { - D_80181224[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80181040; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181040); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_114/ov_SC03_114_jr_801588CC.c b/src/ov_SC03_114/ov_SC03_114_jr_801588CC.c new file mode 100644 index 000000000..5bea16485 --- /dev/null +++ b/src/ov_SC03_114/ov_SC03_114_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80180F78; +extern u8 D_80180EE8; +extern u8 D_80180EC4; +extern u8 D_80180EA0; +extern u8 D_80180F54; +extern u8 D_80180F30; +extern u8 D_80180F0C; +extern u8 D_80180E7C; +extern void func_80145934(void); +extern u8 D_80181008; +extern u8 D_80180FE4; +extern u8 D_80180FC0; +extern u8 D_80180F9C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80180400[]; +extern unsigned char D_80180430[]; +extern unsigned char D_80180480[]; +extern unsigned char D_801804B0[]; +extern unsigned char D_801804E0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80180530[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801805F8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180680[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180688; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A84D0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A84D4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801806B8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80180760[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180784[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80180774; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80180798[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801807A4[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801807B4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801807CC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801807BC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801807E0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801807FC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801807EC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80180810[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80180824[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80180838; +extern void (*D_80180860[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180840; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018086C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801808AC[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801808B0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80180AA4[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80180D14[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80180D24[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A8508; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180D4C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180D2C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180D3C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180D8C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80180D94[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180D60; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80180DA0[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180D70; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A8510; +extern s32 D_801A851C; +extern s32 D_801A8520; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180DDC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A8510; +extern int D_801A851C; +extern int D_801A8520; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80180DE0[])(void); + extern int D_801A8514; + extern int D_801A8518; + short sVar1; + + D_80180DE0[*(unsigned short *)(param_1 + 2)](); + switch (D_801A8510) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A8518 = 0; + D_801A8514 = 0x46; + D_801A8510 += 1; + break; + case 2: + if (D_801A8514 == 0) { + if (SsGetMute() == 0) { + D_801A8510 += 1; + } + } else { + D_801A8514 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A8510 += 1; + } + break; + case 4: + D_801A851C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A8514 = 0xd2; + } else { + D_801A8514 = 1; + } + break; + case 5: + D_801A8514 -= 1; + if (D_801A8514 == -1 || D_801A8520 != 0) { + D_801A8514 = 0; + D_801A8510 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A8514 = 0x28; + D_801A8510 += 1; + break; + case 7: + if (D_801A8514 == 0) { + if (SsGetMute() == 0) { + D_801A8510 += 1; + } + } else { + D_801A8514 -= 1; + } + break; + case 8: + D_801A8518 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A8510; + +void func_80158BB0(void *arg0) { + if (D_801A8510 == 0) { + D_801A8510 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A851C; +extern s32 D_80180DB0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A851C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180DB0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A8520; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A8520 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A8510; +extern s32 D_801A8518; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A8510 == 4) { + D_801A8510 = 5; + } + if (D_801A8518 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80180E18[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80180E18; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_801588CC", func_801594E8); + + +extern void (*D_8018102C[])(void); + +void func_80159698(void *a0) { + D_8018102C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180E4C)); + func_80028620(1, &(*(u8 *)&D_80180E4C) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180E4C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801810D0[])(void); + +void func_80159968(void *a0) { + D_801810D0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80181224[])(void); + +void func_80159B70(void *a0) { + D_80181224[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80181040; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181040); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_115/ov_SC03_115_jr_80154C24.c b/src/ov_SC03_115/ov_SC03_115_jr_80154C24.c index ffffcdcc8..c582f2cc8 100644 --- a/src/ov_SC03_115/ov_SC03_115_jr_80154C24.c +++ b/src/ov_SC03_115/ov_SC03_115_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80182848[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_80193E68; - -void func_80158BB0(void *arg0) { - if (D_80193E68 == 0) { - D_80193E68 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_80193E74; -extern s32 D_8018281C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_80193E74; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018281C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80193E78; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80193E78 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_80193E68; -extern s32 D_80193E70; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_80193E68 == 4) { - D_80193E68 = 5; - } - if (D_80193E70 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80182884[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80182884; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_80154C24", func_801594E8); - - -extern void (*D_80182A98[])(void); - -void func_80159698(void *a0) { - D_80182A98[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801828B8)); - func_80028620(1, &(*(u8 *)&D_801828B8) + 0x10); - func_80028620(2, &(*(u8 *)&D_801828B8) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80182B3C[])(void); - -void func_80159968(void *a0) { - D_80182B3C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80182C90[])(void); - -void func_80159B70(void *a0) { - D_80182C90[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80182AAC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80182AAC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_115/ov_SC03_115_jr_801588CC.c b/src/ov_SC03_115/ov_SC03_115_jr_801588CC.c new file mode 100644 index 000000000..d19b4fade --- /dev/null +++ b/src/ov_SC03_115/ov_SC03_115_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801829E4; +extern u8 D_80182954; +extern u8 D_80182930; +extern u8 D_8018290C; +extern u8 D_801829C0; +extern u8 D_8018299C; +extern u8 D_80182978; +extern u8 D_801828E8; +extern void func_80145934(void); +extern u8 D_80182A74; +extern u8 D_80182A50; +extern u8 D_80182A2C; +extern u8 D_80182A08; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80181E6C[]; +extern unsigned char D_80181E9C[]; +extern unsigned char D_80181EEC[]; +extern unsigned char D_80181F1C[]; +extern unsigned char D_80181F4C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80181F9C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80182064[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801820EC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801820F4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_80193E28; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_80193E2C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80182124; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801821CC[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801821F0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801821E0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80182204[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80182210[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80182220[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80182238[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80182228; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018224C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80182268[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80182258; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018227C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80182290[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801822A4; +extern void (*D_801822CC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801822AC; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801822D8[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80182318[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018231C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80182510[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80182780[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80182790[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_80193E60; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801827B8[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80182798; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801827A8; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801827F8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80182800[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801827CC; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018280C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801827DC; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_80193E68; +extern s32 D_80193E74; +extern s32 D_80193E78; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80182848[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_80193E68; +extern int D_80193E74; +extern int D_80193E78; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018284C[])(void); + extern int D_80193E6C; + extern int D_80193E70; + short sVar1; + + D_8018284C[*(unsigned short *)(param_1 + 2)](); + switch (D_80193E68) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80193E70 = 0; + D_80193E6C = 0x46; + D_80193E68 += 1; + break; + case 2: + if (D_80193E6C == 0) { + if (SsGetMute() == 0) { + D_80193E68 += 1; + } + } else { + D_80193E6C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_80193E68 += 1; + } + break; + case 4: + D_80193E74 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_80193E6C = 0xd2; + } else { + D_80193E6C = 1; + } + break; + case 5: + D_80193E6C -= 1; + if (D_80193E6C == -1 || D_80193E78 != 0) { + D_80193E6C = 0; + D_80193E68 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_80193E6C = 0x28; + D_80193E68 += 1; + break; + case 7: + if (D_80193E6C == 0) { + if (SsGetMute() == 0) { + D_80193E68 += 1; + } + } else { + D_80193E6C -= 1; + } + break; + case 8: + D_80193E70 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_80193E68; + +void func_80158BB0(void *arg0) { + if (D_80193E68 == 0) { + D_80193E68 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_80193E74; +extern s32 D_8018281C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_80193E74; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018281C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80193E78; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80193E78 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_80193E68; +extern s32 D_80193E70; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_80193E68 == 4) { + D_80193E68 = 5; + } + if (D_80193E70 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80182884[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80182884; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_801588CC", func_801594E8); + + +extern void (*D_80182A98[])(void); + +void func_80159698(void *a0) { + D_80182A98[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801828B8)); + func_80028620(1, &(*(u8 *)&D_801828B8) + 0x10); + func_80028620(2, &(*(u8 *)&D_801828B8) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80182B3C[])(void); + +void func_80159968(void *a0) { + D_80182B3C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80182C90[])(void); + +void func_80159B70(void *a0) { + D_80182C90[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80182AAC; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80182AAC); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_116/ov_SC03_116_jr_80154C24.c b/src/ov_SC03_116/ov_SC03_116_jr_80154C24.c index 3cb532379..6dd453c62 100644 --- a/src/ov_SC03_116/ov_SC03_116_jr_80154C24.c +++ b/src/ov_SC03_116/ov_SC03_116_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80184C4C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801969F8; - -void func_80158BB0(void *arg0) { - if (D_801969F8 == 0) { - D_801969F8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_80196A04; -extern s32 D_80184C20[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_80196A04; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80184C20[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80196A08; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80196A08 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801969F8; -extern s32 D_80196A00; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801969F8 == 4) { - D_801969F8 = 5; - } - if (D_80196A00 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184C88[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184C88; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_80154C24", func_801594E8); - - -extern void (*D_80184E9C[])(void); - -void func_80159698(void *a0) { - D_80184E9C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80184CBC)); - func_80028620(1, &(*(u8 *)&D_80184CBC) + 0x10); - func_80028620(2, &(*(u8 *)&D_80184CBC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80184F40[])(void); - -void func_80159968(void *a0) { - D_80184F40[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80185094[])(void); - -void func_80159B70(void *a0) { - D_80185094[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80184EB0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184EB0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_116/ov_SC03_116_jr_801588CC.c b/src/ov_SC03_116/ov_SC03_116_jr_801588CC.c new file mode 100644 index 000000000..398e8b625 --- /dev/null +++ b/src/ov_SC03_116/ov_SC03_116_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80184DE8; +extern u8 D_80184D58; +extern u8 D_80184D34; +extern u8 D_80184D10; +extern u8 D_80184DC4; +extern u8 D_80184DA0; +extern u8 D_80184D7C; +extern u8 D_80184CEC; +extern void func_80145934(void); +extern u8 D_80184E78; +extern u8 D_80184E54; +extern u8 D_80184E30; +extern u8 D_80184E0C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80184270[]; +extern unsigned char D_801842A0[]; +extern unsigned char D_801842F0[]; +extern unsigned char D_80184320[]; +extern unsigned char D_80184350[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801843A0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80184468[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801844F0[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801844F8; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801969B8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801969BC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80184528; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801845D0[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801845F4[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801845E4; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80184608[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80184614[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80184624[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018463C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018462C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80184650[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018466C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018465C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80184680[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80184694[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801846A8; +extern void (*D_801846D0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801846B0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801846DC[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018471C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80184720[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80184914[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184B84[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184B94[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801969F0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184BBC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80184B9C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80184BAC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80184BFC[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80184C04[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184BD0; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80184C10[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80184BE0; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801969F8; +extern s32 D_80196A04; +extern s32 D_80196A08; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184C4C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801969F8; +extern int D_80196A04; +extern int D_80196A08; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80184C50[])(void); + extern int D_801969FC; + extern int D_80196A00; + short sVar1; + + D_80184C50[*(unsigned short *)(param_1 + 2)](); + switch (D_801969F8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80196A00 = 0; + D_801969FC = 0x46; + D_801969F8 += 1; + break; + case 2: + if (D_801969FC == 0) { + if (SsGetMute() == 0) { + D_801969F8 += 1; + } + } else { + D_801969FC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801969F8 += 1; + } + break; + case 4: + D_80196A04 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801969FC = 0xd2; + } else { + D_801969FC = 1; + } + break; + case 5: + D_801969FC -= 1; + if (D_801969FC == -1 || D_80196A08 != 0) { + D_801969FC = 0; + D_801969F8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801969FC = 0x28; + D_801969F8 += 1; + break; + case 7: + if (D_801969FC == 0) { + if (SsGetMute() == 0) { + D_801969F8 += 1; + } + } else { + D_801969FC -= 1; + } + break; + case 8: + D_80196A00 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801969F8; + +void func_80158BB0(void *arg0) { + if (D_801969F8 == 0) { + D_801969F8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_80196A04; +extern s32 D_80184C20[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_80196A04; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80184C20[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80196A08; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80196A08 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801969F8; +extern s32 D_80196A00; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801969F8 == 4) { + D_801969F8 = 5; + } + if (D_80196A00 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184C88[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184C88; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_801588CC", func_801594E8); + + +extern void (*D_80184E9C[])(void); + +void func_80159698(void *a0) { + D_80184E9C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80184CBC)); + func_80028620(1, &(*(u8 *)&D_80184CBC) + 0x10); + func_80028620(2, &(*(u8 *)&D_80184CBC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80184F40[])(void); + +void func_80159968(void *a0) { + D_80184F40[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80185094[])(void); + +void func_80159B70(void *a0) { + D_80185094[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80184EB0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184EB0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_117/ov_SC03_117_jr_80154C24.c b/src/ov_SC03_117/ov_SC03_117_jr_80154C24.c index 34ed4cdc0..2742a22cd 100644 --- a/src/ov_SC03_117/ov_SC03_117_jr_80154C24.c +++ b/src/ov_SC03_117/ov_SC03_117_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80186C58[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801CD170; - -void func_80158BB0(void *arg0) { - if (D_801CD170 == 0) { - D_801CD170 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801CD17C; -extern s32 D_80186C2C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801CD17C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80186C2C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801CD180; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801CD180 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801CD170; -extern s32 D_801CD178; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801CD170 == 4) { - D_801CD170 = 5; - } - if (D_801CD178 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80186C94[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80186C94; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80154C24", func_801594E8); - - -extern void (*D_80186EA8[])(void); - -void func_80159698(void *a0) { - D_80186EA8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80186CC8)); - func_80028620(1, &(*(u8 *)&D_80186CC8) + 0x10); - func_80028620(2, &(*(u8 *)&D_80186CC8) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80186F4C[])(void); - -void func_80159968(void *a0) { - D_80186F4C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801870A0[])(void); - -void func_80159B70(void *a0) { - D_801870A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80186EBC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186EBC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_117/ov_SC03_117_jr_801588CC.c b/src/ov_SC03_117/ov_SC03_117_jr_801588CC.c new file mode 100644 index 000000000..17b5437d3 --- /dev/null +++ b/src/ov_SC03_117/ov_SC03_117_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80186DF4; +extern u8 D_80186D64; +extern u8 D_80186D40; +extern u8 D_80186D1C; +extern u8 D_80186DD0; +extern u8 D_80186DAC; +extern u8 D_80186D88; +extern u8 D_80186CF8; +extern void func_80145934(void); +extern u8 D_80186E84; +extern u8 D_80186E60; +extern u8 D_80186E3C; +extern u8 D_80186E18; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018627C[]; +extern unsigned char D_801862AC[]; +extern unsigned char D_801862FC[]; +extern unsigned char D_8018632C[]; +extern unsigned char D_8018635C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801863AC[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80186474[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801864FC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80186504; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801CD130; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801CD134; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80186534; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801865DC[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80186600[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801865F0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80186614[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80186620[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80186630[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80186648[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186638; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018665C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80186678[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186668; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018668C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801866A0[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801866B4; +extern void (*D_801866DC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801866BC; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801866E8[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80186728[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018672C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80186920[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80186B90[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80186BA0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801CD168; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186BC8[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80186BA8; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80186BB8; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80186C08[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80186C10[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186BDC; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80186C1C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80186BEC; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801CD170; +extern s32 D_801CD17C; +extern s32 D_801CD180; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80186C58[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801CD170; +extern int D_801CD17C; +extern int D_801CD180; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80186C5C[])(void); + extern int D_801CD174; + extern int D_801CD178; + short sVar1; + + D_80186C5C[*(unsigned short *)(param_1 + 2)](); + switch (D_801CD170) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801CD178 = 0; + D_801CD174 = 0x46; + D_801CD170 += 1; + break; + case 2: + if (D_801CD174 == 0) { + if (SsGetMute() == 0) { + D_801CD170 += 1; + } + } else { + D_801CD174 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801CD170 += 1; + } + break; + case 4: + D_801CD17C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801CD174 = 0xd2; + } else { + D_801CD174 = 1; + } + break; + case 5: + D_801CD174 -= 1; + if (D_801CD174 == -1 || D_801CD180 != 0) { + D_801CD174 = 0; + D_801CD170 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801CD174 = 0x28; + D_801CD170 += 1; + break; + case 7: + if (D_801CD174 == 0) { + if (SsGetMute() == 0) { + D_801CD170 += 1; + } + } else { + D_801CD174 -= 1; + } + break; + case 8: + D_801CD178 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801CD170; + +void func_80158BB0(void *arg0) { + if (D_801CD170 == 0) { + D_801CD170 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801CD17C; +extern s32 D_80186C2C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801CD17C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80186C2C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801CD180; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801CD180 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801CD170; +extern s32 D_801CD178; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801CD170 == 4) { + D_801CD170 = 5; + } + if (D_801CD178 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80186C94[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80186C94; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_801588CC", func_801594E8); + + +extern void (*D_80186EA8[])(void); + +void func_80159698(void *a0) { + D_80186EA8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80186CC8)); + func_80028620(1, &(*(u8 *)&D_80186CC8) + 0x10); + func_80028620(2, &(*(u8 *)&D_80186CC8) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80186F4C[])(void); + +void func_80159968(void *a0) { + D_80186F4C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801870A0[])(void); + +void func_80159B70(void *a0) { + D_801870A0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80186EBC; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186EBC); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_118/ov_SC03_118_jr_80154C24.c b/src/ov_SC03_118/ov_SC03_118_jr_80154C24.c index 02eb36b55..0a281ab0b 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_80154C24.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018BD04[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801D30C0; - -void func_80158BB0(void *arg0) { - if (D_801D30C0 == 0) { - D_801D30C0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801D30CC; -extern s32 D_8018BCD8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801D30CC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018BCD8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801D30D0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801D30D0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801D30C0; -extern s32 D_801D30C8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801D30C0 == 4) { - D_801D30C0 = 5; - } - if (D_801D30C8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018BD40[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018BD40; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_80154C24", func_801594E8); - - -extern void (*D_8018BF54[])(void); - -void func_80159698(void *a0) { - D_8018BF54[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018BD74)); - func_80028620(1, &(*(u8 *)&D_8018BD74) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018BD74) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018BFF8[])(void); - -void func_80159968(void *a0) { - D_8018BFF8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018C14C[])(void); - -void func_80159B70(void *a0) { - D_8018C14C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018BF68; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018BF68); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_118/ov_SC03_118_jr_801588CC.c b/src/ov_SC03_118/ov_SC03_118_jr_801588CC.c new file mode 100644 index 000000000..29901bdfd --- /dev/null +++ b/src/ov_SC03_118/ov_SC03_118_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018BEA0; +extern u8 D_8018BE10; +extern u8 D_8018BDEC; +extern u8 D_8018BDC8; +extern u8 D_8018BE7C; +extern u8 D_8018BE58; +extern u8 D_8018BE34; +extern u8 D_8018BDA4; +extern void func_80145934(void); +extern u8 D_8018BF30; +extern u8 D_8018BF0C; +extern u8 D_8018BEE8; +extern u8 D_8018BEC4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018B328[]; +extern unsigned char D_8018B358[]; +extern unsigned char D_8018B3A8[]; +extern unsigned char D_8018B3D8[]; +extern unsigned char D_8018B408[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018B458[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018B520[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018B5A8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018B5B0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801D3080; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801D3084; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018B5E0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018B688[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018B6AC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018B69C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018B6C0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018B6CC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018B6DC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018B6F4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018B6E4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018B708[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018B724[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018B714; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018B738[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018B74C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018B760; +extern void (*D_8018B788[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018B768; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018B794[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018B7D4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018B7D8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018B9CC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018BC3C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018BC4C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801D30B8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018BC74[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018BC54; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018BC64; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018BCB4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018BCBC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018BC88; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018BCC8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018BC98; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801D30C0; +extern s32 D_801D30CC; +extern s32 D_801D30D0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018BD04[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801D30C0; +extern int D_801D30CC; +extern int D_801D30D0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018BD08[])(void); + extern int D_801D30C4; + extern int D_801D30C8; + short sVar1; + + D_8018BD08[*(unsigned short *)(param_1 + 2)](); + switch (D_801D30C0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801D30C8 = 0; + D_801D30C4 = 0x46; + D_801D30C0 += 1; + break; + case 2: + if (D_801D30C4 == 0) { + if (SsGetMute() == 0) { + D_801D30C0 += 1; + } + } else { + D_801D30C4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801D30C0 += 1; + } + break; + case 4: + D_801D30CC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801D30C4 = 0xd2; + } else { + D_801D30C4 = 1; + } + break; + case 5: + D_801D30C4 -= 1; + if (D_801D30C4 == -1 || D_801D30D0 != 0) { + D_801D30C4 = 0; + D_801D30C0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801D30C4 = 0x28; + D_801D30C0 += 1; + break; + case 7: + if (D_801D30C4 == 0) { + if (SsGetMute() == 0) { + D_801D30C0 += 1; + } + } else { + D_801D30C4 -= 1; + } + break; + case 8: + D_801D30C8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801D30C0; + +void func_80158BB0(void *arg0) { + if (D_801D30C0 == 0) { + D_801D30C0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801D30CC; +extern s32 D_8018BCD8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801D30CC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018BCD8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801D30D0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801D30D0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801D30C0; +extern s32 D_801D30C8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801D30C0 == 4) { + D_801D30C0 = 5; + } + if (D_801D30C8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018BD40[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018BD40; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_801588CC", func_801594E8); + + +extern void (*D_8018BF54[])(void); + +void func_80159698(void *a0) { + D_8018BF54[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018BD74)); + func_80028620(1, &(*(u8 *)&D_8018BD74) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018BD74) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018BFF8[])(void); + +void func_80159968(void *a0) { + D_8018BFF8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018C14C[])(void); + +void func_80159B70(void *a0) { + D_8018C14C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018BF68; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018BF68); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_119/ov_SC03_119_jr_80154C24.c b/src/ov_SC03_119/ov_SC03_119_jr_80154C24.c index 39241dae8..8b0cfe609 100644 --- a/src/ov_SC03_119/ov_SC03_119_jr_80154C24.c +++ b/src/ov_SC03_119/ov_SC03_119_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018BD04[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801D30C0; - -void func_80158BB0(void *arg0) { - if (D_801D30C0 == 0) { - D_801D30C0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801D30CC; -extern s32 D_8018BCD8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801D30CC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018BCD8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801D30D0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801D30D0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801D30C0; -extern s32 D_801D30C8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801D30C0 == 4) { - D_801D30C0 = 5; - } - if (D_801D30C8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018BD40[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018BD40; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_80154C24", func_801594E8); - - -extern void (*D_8018BF54[])(void); - -void func_80159698(void *a0) { - D_8018BF54[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018BD74)); - func_80028620(1, &(*(u8 *)&D_8018BD74) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018BD74) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018BFF8[])(void); - -void func_80159968(void *a0) { - D_8018BFF8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018C14C[])(void); - -void func_80159B70(void *a0) { - D_8018C14C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018BF68; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018BF68); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_801588CC.c b/src/ov_SC03_119/ov_SC03_119_jr_801588CC.c new file mode 100644 index 000000000..6410cf888 --- /dev/null +++ b/src/ov_SC03_119/ov_SC03_119_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018BEA0; +extern u8 D_8018BE10; +extern u8 D_8018BDEC; +extern u8 D_8018BDC8; +extern u8 D_8018BE7C; +extern u8 D_8018BE58; +extern u8 D_8018BE34; +extern u8 D_8018BDA4; +extern void func_80145934(void); +extern u8 D_8018BF30; +extern u8 D_8018BF0C; +extern u8 D_8018BEE8; +extern u8 D_8018BEC4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018B328[]; +extern unsigned char D_8018B358[]; +extern unsigned char D_8018B3A8[]; +extern unsigned char D_8018B3D8[]; +extern unsigned char D_8018B408[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018B458[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018B520[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018B5A8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018B5B0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801D3080; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801D3084; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018B5E0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018B688[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018B6AC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018B69C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018B6C0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018B6CC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018B6DC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018B6F4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018B6E4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018B708[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018B724[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018B714; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018B738[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018B74C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018B760; +extern void (*D_8018B788[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018B768; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018B794[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018B7D4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018B7D8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018B9CC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018BC3C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018BC4C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801D30B8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018BC74[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018BC54; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018BC64; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018BCB4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018BCBC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018BC88; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018BCC8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018BC98; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801D30C0; +extern s32 D_801D30CC; +extern s32 D_801D30D0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018BD04[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801D30C0; +extern int D_801D30CC; +extern int D_801D30D0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018BD08[])(void); + extern int D_801D30C4; + extern int D_801D30C8; + short sVar1; + + D_8018BD08[*(unsigned short *)(param_1 + 2)](); + switch (D_801D30C0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801D30C8 = 0; + D_801D30C4 = 0x46; + D_801D30C0 += 1; + break; + case 2: + if (D_801D30C4 == 0) { + if (SsGetMute() == 0) { + D_801D30C0 += 1; + } + } else { + D_801D30C4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801D30C0 += 1; + } + break; + case 4: + D_801D30CC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801D30C4 = 0xd2; + } else { + D_801D30C4 = 1; + } + break; + case 5: + D_801D30C4 -= 1; + if (D_801D30C4 == -1 || D_801D30D0 != 0) { + D_801D30C4 = 0; + D_801D30C0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801D30C4 = 0x28; + D_801D30C0 += 1; + break; + case 7: + if (D_801D30C4 == 0) { + if (SsGetMute() == 0) { + D_801D30C0 += 1; + } + } else { + D_801D30C4 -= 1; + } + break; + case 8: + D_801D30C8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801D30C0; + +void func_80158BB0(void *arg0) { + if (D_801D30C0 == 0) { + D_801D30C0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801D30CC; +extern s32 D_8018BCD8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801D30CC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018BCD8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801D30D0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801D30D0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801D30C0; +extern s32 D_801D30C8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801D30C0 == 4) { + D_801D30C0 = 5; + } + if (D_801D30C8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018BD40[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018BD40; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801588CC", func_801594E8); + + +extern void (*D_8018BF54[])(void); + +void func_80159698(void *a0) { + D_8018BF54[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018BD74)); + func_80028620(1, &(*(u8 *)&D_8018BD74) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018BD74) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018BFF8[])(void); + +void func_80159968(void *a0) { + D_8018BFF8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018C14C[])(void); + +void func_80159B70(void *a0) { + D_8018C14C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018BF68; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018BF68); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_121/ov_SC03_121_jr_80154C24.c b/src/ov_SC03_121/ov_SC03_121_jr_80154C24.c index f078a6fd3..91934c5cc 100644 --- a/src/ov_SC03_121/ov_SC03_121_jr_80154C24.c +++ b/src/ov_SC03_121/ov_SC03_121_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80184520[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801ADB68; - -void func_80158BB0(void *arg0) { - if (D_801ADB68 == 0) { - D_801ADB68 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801ADB74; -extern s32 D_801844F4[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801ADB74; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801844F4[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801ADB78; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801ADB78 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801ADB68; -extern s32 D_801ADB70; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801ADB68 == 4) { - D_801ADB68 = 5; - } - if (D_801ADB70 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018455C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018455C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_80154C24", func_801594E8); - - -extern void (*D_80184770[])(void); - -void func_80159698(void *a0) { - D_80184770[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80184590)); - func_80028620(1, &(*(u8 *)&D_80184590) + 0x10); - func_80028620(2, &(*(u8 *)&D_80184590) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80184814[])(void); - -void func_80159968(void *a0) { - D_80184814[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80184968[])(void); - -void func_80159B70(void *a0) { - D_80184968[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80184784; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184784); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_121/ov_SC03_121_jr_801588CC.c b/src/ov_SC03_121/ov_SC03_121_jr_801588CC.c new file mode 100644 index 000000000..04e759528 --- /dev/null +++ b/src/ov_SC03_121/ov_SC03_121_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801846BC; +extern u8 D_8018462C; +extern u8 D_80184608; +extern u8 D_801845E4; +extern u8 D_80184698; +extern u8 D_80184674; +extern u8 D_80184650; +extern u8 D_801845C0; +extern void func_80145934(void); +extern u8 D_8018474C; +extern u8 D_80184728; +extern u8 D_80184704; +extern u8 D_801846E0; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80183B44[]; +extern unsigned char D_80183B74[]; +extern unsigned char D_80183BC4[]; +extern unsigned char D_80183BF4[]; +extern unsigned char D_80183C24[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80183C74[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80183D3C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80183DC4[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80183DCC; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801ADB28; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801ADB2C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80183DFC; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80183EA4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80183EC8[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80183EB8; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80183EDC[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80183EE8[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80183EF8[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80183F10[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183F00; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80183F24[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80183F40[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183F30; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80183F54[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80183F68[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80183F7C; +extern void (*D_80183FA4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183F84; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80183FB0[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80183FF0[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80183FF4[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801841E8[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184458[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184468[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801ADB60; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184490[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80184470; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80184480; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801844D0[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801844D8[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801844A4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801844E4[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801844B4; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801ADB68; +extern s32 D_801ADB74; +extern s32 D_801ADB78; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184520[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801ADB68; +extern int D_801ADB74; +extern int D_801ADB78; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80184524[])(void); + extern int D_801ADB6C; + extern int D_801ADB70; + short sVar1; + + D_80184524[*(unsigned short *)(param_1 + 2)](); + switch (D_801ADB68) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801ADB70 = 0; + D_801ADB6C = 0x46; + D_801ADB68 += 1; + break; + case 2: + if (D_801ADB6C == 0) { + if (SsGetMute() == 0) { + D_801ADB68 += 1; + } + } else { + D_801ADB6C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801ADB68 += 1; + } + break; + case 4: + D_801ADB74 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801ADB6C = 0xd2; + } else { + D_801ADB6C = 1; + } + break; + case 5: + D_801ADB6C -= 1; + if (D_801ADB6C == -1 || D_801ADB78 != 0) { + D_801ADB6C = 0; + D_801ADB68 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801ADB6C = 0x28; + D_801ADB68 += 1; + break; + case 7: + if (D_801ADB6C == 0) { + if (SsGetMute() == 0) { + D_801ADB68 += 1; + } + } else { + D_801ADB6C -= 1; + } + break; + case 8: + D_801ADB70 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801ADB68; + +void func_80158BB0(void *arg0) { + if (D_801ADB68 == 0) { + D_801ADB68 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801ADB74; +extern s32 D_801844F4[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801ADB74; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801844F4[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801ADB78; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801ADB78 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801ADB68; +extern s32 D_801ADB70; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801ADB68 == 4) { + D_801ADB68 = 5; + } + if (D_801ADB70 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018455C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018455C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_801588CC", func_801594E8); + + +extern void (*D_80184770[])(void); + +void func_80159698(void *a0) { + D_80184770[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80184590)); + func_80028620(1, &(*(u8 *)&D_80184590) + 0x10); + func_80028620(2, &(*(u8 *)&D_80184590) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80184814[])(void); + +void func_80159968(void *a0) { + D_80184814[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80184968[])(void); + +void func_80159B70(void *a0) { + D_80184968[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80184784; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184784); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_124/ov_SC03_124_jr_80154C24.c b/src/ov_SC03_124/ov_SC03_124_jr_80154C24.c index 007c6f968..2ec5d6407 100644 --- a/src/ov_SC03_124/ov_SC03_124_jr_80154C24.c +++ b/src/ov_SC03_124/ov_SC03_124_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018CF4C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E0690; - -void func_80158BB0(void *arg0) { - if (D_801E0690 == 0) { - D_801E0690 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E069C; -extern s32 D_8018CF20[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E069C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018CF20[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E06A0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E06A0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E0690; -extern s32 D_801E0698; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E0690 == 4) { - D_801E0690 = 5; - } - if (D_801E0698 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018CF88[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018CF88; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80154C24", func_801594E8); - - -extern void (*D_8018D19C[])(void); - -void func_80159698(void *a0) { - D_8018D19C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018CFBC)); - func_80028620(1, &(*(u8 *)&D_8018CFBC) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018CFBC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018D240[])(void); - -void func_80159968(void *a0) { - D_8018D240[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018D394[])(void); - -void func_80159B70(void *a0) { - D_8018D394[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018D1B0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018D1B0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_124/ov_SC03_124_jr_801588CC.c b/src/ov_SC03_124/ov_SC03_124_jr_801588CC.c new file mode 100644 index 000000000..4109c5e29 --- /dev/null +++ b/src/ov_SC03_124/ov_SC03_124_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018D0E8; +extern u8 D_8018D058; +extern u8 D_8018D034; +extern u8 D_8018D010; +extern u8 D_8018D0C4; +extern u8 D_8018D0A0; +extern u8 D_8018D07C; +extern u8 D_8018CFEC; +extern void func_80145934(void); +extern u8 D_8018D178; +extern u8 D_8018D154; +extern u8 D_8018D130; +extern u8 D_8018D10C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018C570[]; +extern unsigned char D_8018C5A0[]; +extern unsigned char D_8018C5F0[]; +extern unsigned char D_8018C620[]; +extern unsigned char D_8018C650[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018C6A0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018C768[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018C7F0[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018C7F8; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E0650; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E0654; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018C828; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018C8D0[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018C8F4[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018C8E4; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018C908[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018C914[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018C924[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018C93C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018C92C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018C950[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018C96C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018C95C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018C980[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018C994[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018C9A8; +extern void (*D_8018C9D0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018C9B0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018C9DC[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018CA1C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018CA20[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018CC14[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018CE84[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018CE94[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E0688; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018CEBC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018CE9C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018CEAC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018CEFC[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018CF04[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018CED0; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018CF10[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018CEE0; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E0690; +extern s32 D_801E069C; +extern s32 D_801E06A0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018CF4C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801E0690; +extern int D_801E069C; +extern int D_801E06A0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018CF50[])(void); + extern int D_801E0694; + extern int D_801E0698; + short sVar1; + + D_8018CF50[*(unsigned short *)(param_1 + 2)](); + switch (D_801E0690) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801E0698 = 0; + D_801E0694 = 0x46; + D_801E0690 += 1; + break; + case 2: + if (D_801E0694 == 0) { + if (SsGetMute() == 0) { + D_801E0690 += 1; + } + } else { + D_801E0694 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801E0690 += 1; + } + break; + case 4: + D_801E069C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801E0694 = 0xd2; + } else { + D_801E0694 = 1; + } + break; + case 5: + D_801E0694 -= 1; + if (D_801E0694 == -1 || D_801E06A0 != 0) { + D_801E0694 = 0; + D_801E0690 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801E0694 = 0x28; + D_801E0690 += 1; + break; + case 7: + if (D_801E0694 == 0) { + if (SsGetMute() == 0) { + D_801E0690 += 1; + } + } else { + D_801E0694 -= 1; + } + break; + case 8: + D_801E0698 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801E0690; + +void func_80158BB0(void *arg0) { + if (D_801E0690 == 0) { + D_801E0690 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801E069C; +extern s32 D_8018CF20[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801E069C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018CF20[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801E06A0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801E06A0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801E0690; +extern s32 D_801E0698; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801E0690 == 4) { + D_801E0690 = 5; + } + if (D_801E0698 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018CF88[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018CF88; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_801588CC", func_801594E8); + + +extern void (*D_8018D19C[])(void); + +void func_80159698(void *a0) { + D_8018D19C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018CFBC)); + func_80028620(1, &(*(u8 *)&D_8018CFBC) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018CFBC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018D240[])(void); + +void func_80159968(void *a0) { + D_8018D240[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018D394[])(void); + +void func_80159B70(void *a0) { + D_8018D394[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018D1B0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018D1B0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_125/ov_SC03_125_jr_80154C24.c b/src/ov_SC03_125/ov_SC03_125_jr_80154C24.c index a33fcfea1..3fea4941c 100644 --- a/src/ov_SC03_125/ov_SC03_125_jr_80154C24.c +++ b/src/ov_SC03_125/ov_SC03_125_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018611C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801C2F88; - -void func_80158BB0(void *arg0) { - if (D_801C2F88 == 0) { - D_801C2F88 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801C2F94; -extern s32 D_801860F0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C2F94; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801860F0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801C2F98; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C2F98 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801C2F88; -extern s32 D_801C2F90; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801C2F88 == 4) { - D_801C2F88 = 5; - } - if (D_801C2F90 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80186158[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80186158; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_80154C24", func_801594E8); - - -extern void (*D_8018636C[])(void); - -void func_80159698(void *a0) { - D_8018636C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018618C)); - func_80028620(1, &(*(u8 *)&D_8018618C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018618C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80186410[])(void); - -void func_80159968(void *a0) { - D_80186410[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80186564[])(void); - -void func_80159B70(void *a0) { - D_80186564[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80186380; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186380); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_125/ov_SC03_125_jr_801588CC.c b/src/ov_SC03_125/ov_SC03_125_jr_801588CC.c new file mode 100644 index 000000000..94d1975ce --- /dev/null +++ b/src/ov_SC03_125/ov_SC03_125_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801862B8; +extern u8 D_80186228; +extern u8 D_80186204; +extern u8 D_801861E0; +extern u8 D_80186294; +extern u8 D_80186270; +extern u8 D_8018624C; +extern u8 D_801861BC; +extern void func_80145934(void); +extern u8 D_80186348; +extern u8 D_80186324; +extern u8 D_80186300; +extern u8 D_801862DC; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80185740[]; +extern unsigned char D_80185770[]; +extern unsigned char D_801857C0[]; +extern unsigned char D_801857F0[]; +extern unsigned char D_80185820[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80185870[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80185938[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801859C0[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801859C8; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801C2F48; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801C2F4C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801859F8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80185AA0[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80185AC4[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80185AB4; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80185AD8[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80185AE4[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80185AF4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80185B0C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80185AFC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80185B20[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80185B3C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80185B2C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80185B50[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80185B64[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80185B78; +extern void (*D_80185BA0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80185B80; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80185BAC[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80185BEC[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80185BF0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80185DE4[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80186054[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80186064[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801C2F80; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018608C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018606C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018607C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801860CC[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801860D4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801860A0; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801860E0[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801860B0; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801C2F88; +extern s32 D_801C2F94; +extern s32 D_801C2F98; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018611C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801C2F88; +extern int D_801C2F94; +extern int D_801C2F98; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80186120[])(void); + extern int D_801C2F8C; + extern int D_801C2F90; + short sVar1; + + D_80186120[*(unsigned short *)(param_1 + 2)](); + switch (D_801C2F88) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C2F90 = 0; + D_801C2F8C = 0x46; + D_801C2F88 += 1; + break; + case 2: + if (D_801C2F8C == 0) { + if (SsGetMute() == 0) { + D_801C2F88 += 1; + } + } else { + D_801C2F8C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C2F88 += 1; + } + break; + case 4: + D_801C2F94 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C2F8C = 0xd2; + } else { + D_801C2F8C = 1; + } + break; + case 5: + D_801C2F8C -= 1; + if (D_801C2F8C == -1 || D_801C2F98 != 0) { + D_801C2F8C = 0; + D_801C2F88 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C2F8C = 0x28; + D_801C2F88 += 1; + break; + case 7: + if (D_801C2F8C == 0) { + if (SsGetMute() == 0) { + D_801C2F88 += 1; + } + } else { + D_801C2F8C -= 1; + } + break; + case 8: + D_801C2F90 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801C2F88; + +void func_80158BB0(void *arg0) { + if (D_801C2F88 == 0) { + D_801C2F88 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801C2F94; +extern s32 D_801860F0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C2F94; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801860F0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801C2F98; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C2F98 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801C2F88; +extern s32 D_801C2F90; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801C2F88 == 4) { + D_801C2F88 = 5; + } + if (D_801C2F90 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80186158[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80186158; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_801588CC", func_801594E8); + + +extern void (*D_8018636C[])(void); + +void func_80159698(void *a0) { + D_8018636C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018618C)); + func_80028620(1, &(*(u8 *)&D_8018618C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018618C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80186410[])(void); + +void func_80159968(void *a0) { + D_80186410[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80186564[])(void); + +void func_80159B70(void *a0) { + D_80186564[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80186380; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186380); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC03_126/ov_SC03_126_jr_80154C24.c b/src/ov_SC03_126/ov_SC03_126_jr_80154C24.c index 1025a118e..47579f5ee 100644 --- a/src/ov_SC03_126/ov_SC03_126_jr_80154C24.c +++ b/src/ov_SC03_126/ov_SC03_126_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80181614[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8018E850; - -void func_80158BB0(void *arg0) { - if (D_8018E850 == 0) { - D_8018E850 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8018E85C; -extern s32 D_801815E8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8018E85C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801815E8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8018E860; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8018E860 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8018E850; -extern s32 D_8018E858; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8018E850 == 4) { - D_8018E850 = 5; - } - if (D_8018E858 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80181650[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80181650; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_80154C24", func_801594E8); - - -extern void (*D_80181864[])(void); - -void func_80159698(void *a0) { - D_80181864[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80181684)); - func_80028620(1, &(*(u8 *)&D_80181684) + 0x10); - func_80028620(2, &(*(u8 *)&D_80181684) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80181908[])(void); - -void func_80159968(void *a0) { - D_80181908[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80181A5C[])(void); - -void func_80159B70(void *a0) { - D_80181A5C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80181878; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181878); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC03_126/ov_SC03_126_jr_801588CC.c b/src/ov_SC03_126/ov_SC03_126_jr_801588CC.c new file mode 100644 index 000000000..b32fd241e --- /dev/null +++ b/src/ov_SC03_126/ov_SC03_126_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801817B0; +extern u8 D_80181720; +extern u8 D_801816FC; +extern u8 D_801816D8; +extern u8 D_8018178C; +extern u8 D_80181768; +extern u8 D_80181744; +extern u8 D_801816B4; +extern void func_80145934(void); +extern u8 D_80181840; +extern u8 D_8018181C; +extern u8 D_801817F8; +extern u8 D_801817D4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80180C38[]; +extern unsigned char D_80180C68[]; +extern unsigned char D_80180CB8[]; +extern unsigned char D_80180CE8[]; +extern unsigned char D_80180D18[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80180D68[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80180E30[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180EB8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180EC0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8018E810; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8018E814; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180EF0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80180F98[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180FBC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80180FAC; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80180FD0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80180FDC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80180FEC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80181004[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180FF4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80181018[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80181034[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181024; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80181048[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018105C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80181070; +extern void (*D_80181098[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181078; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801810A4[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801810E4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801810E8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801812DC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018154C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018155C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8018E848; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181584[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80181564; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80181574; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801815C4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801815CC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181598; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801815D8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801815A8; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8018E850; +extern s32 D_8018E85C; +extern s32 D_8018E860; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181614[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8018E850; +extern int D_8018E85C; +extern int D_8018E860; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80181618[])(void); + extern int D_8018E854; + extern int D_8018E858; + short sVar1; + + D_80181618[*(unsigned short *)(param_1 + 2)](); + switch (D_8018E850) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8018E858 = 0; + D_8018E854 = 0x46; + D_8018E850 += 1; + break; + case 2: + if (D_8018E854 == 0) { + if (SsGetMute() == 0) { + D_8018E850 += 1; + } + } else { + D_8018E854 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8018E850 += 1; + } + break; + case 4: + D_8018E85C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8018E854 = 0xd2; + } else { + D_8018E854 = 1; + } + break; + case 5: + D_8018E854 -= 1; + if (D_8018E854 == -1 || D_8018E860 != 0) { + D_8018E854 = 0; + D_8018E850 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8018E854 = 0x28; + D_8018E850 += 1; + break; + case 7: + if (D_8018E854 == 0) { + if (SsGetMute() == 0) { + D_8018E850 += 1; + } + } else { + D_8018E854 -= 1; + } + break; + case 8: + D_8018E858 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8018E850; + +void func_80158BB0(void *arg0) { + if (D_8018E850 == 0) { + D_8018E850 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8018E85C; +extern s32 D_801815E8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8018E85C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801815E8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8018E860; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8018E860 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8018E850; +extern s32 D_8018E858; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8018E850 == 4) { + D_8018E850 = 5; + } + if (D_8018E858 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80181650[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80181650; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_801588CC", func_801594E8); + + +extern void (*D_80181864[])(void); + +void func_80159698(void *a0) { + D_80181864[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80181684)); + func_80028620(1, &(*(u8 *)&D_80181684) + 0x10); + func_80028620(2, &(*(u8 *)&D_80181684) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80181908[])(void); + +void func_80159968(void *a0) { + D_80181908[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80181A5C[])(void); + +void func_80159B70(void *a0) { + D_80181A5C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80181878; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181878); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_000/ov_SC04_000_jr_80154C24.c b/src/ov_SC04_000/ov_SC04_000_jr_80154C24.c index 641781044..64925f2d8 100644 --- a/src/ov_SC04_000/ov_SC04_000_jr_80154C24.c +++ b/src/ov_SC04_000/ov_SC04_000_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80185620[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A8900; - -void func_80158BB0(void *arg0) { - if (D_801A8900 == 0) { - D_801A8900 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A890C; -extern s32 D_801855F4[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A890C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801855F4[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A8910; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A8910 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A8900; -extern s32 D_801A8908; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A8900 == 4) { - D_801A8900 = 5; - } - if (D_801A8908 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018565C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018565C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_80154C24", func_801594E8); - - -extern void (*D_80185870[])(void); - -void func_80159698(void *a0) { - D_80185870[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80185690)); - func_80028620(1, &(*(u8 *)&D_80185690) + 0x10); - func_80028620(2, &(*(u8 *)&D_80185690) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80185914[])(void); - -void func_80159968(void *a0) { - D_80185914[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80185A68[])(void); - -void func_80159B70(void *a0) { - D_80185A68[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80185884; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80185884); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_000/ov_SC04_000_jr_801588CC.c b/src/ov_SC04_000/ov_SC04_000_jr_801588CC.c new file mode 100644 index 000000000..7e6edcb2f --- /dev/null +++ b/src/ov_SC04_000/ov_SC04_000_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801857BC; +extern u8 D_8018572C; +extern u8 D_80185708; +extern u8 D_801856E4; +extern u8 D_80185798; +extern u8 D_80185774; +extern u8 D_80185750; +extern u8 D_801856C0; +extern void func_80145934(void); +extern u8 D_8018584C; +extern u8 D_80185828; +extern u8 D_80185804; +extern u8 D_801857E0; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80184C44[]; +extern unsigned char D_80184C74[]; +extern unsigned char D_80184CC4[]; +extern unsigned char D_80184CF4[]; +extern unsigned char D_80184D24[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80184D74[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80184E3C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80184EC4[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80184ECC; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A88C0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A88C4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80184EFC; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80184FA4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80184FC8[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80184FB8; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80184FDC[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80184FE8[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80184FF8[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80185010[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80185000; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80185024[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80185040[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80185030; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80185054[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80185068[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018507C; +extern void (*D_801850A4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80185084; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801850B0[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801850F0[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801850F4[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801852E8[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80185558[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80185568[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A88F8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80185590[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80185570; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80185580; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801855D0[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801855D8[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801855A4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801855E4[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801855B4; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A8900; +extern s32 D_801A890C; +extern s32 D_801A8910; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80185620[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A8900; +extern int D_801A890C; +extern int D_801A8910; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80185624[])(void); + extern int D_801A8904; + extern int D_801A8908; + short sVar1; + + D_80185624[*(unsigned short *)(param_1 + 2)](); + switch (D_801A8900) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A8908 = 0; + D_801A8904 = 0x46; + D_801A8900 += 1; + break; + case 2: + if (D_801A8904 == 0) { + if (SsGetMute() == 0) { + D_801A8900 += 1; + } + } else { + D_801A8904 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A8900 += 1; + } + break; + case 4: + D_801A890C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A8904 = 0xd2; + } else { + D_801A8904 = 1; + } + break; + case 5: + D_801A8904 -= 1; + if (D_801A8904 == -1 || D_801A8910 != 0) { + D_801A8904 = 0; + D_801A8900 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A8904 = 0x28; + D_801A8900 += 1; + break; + case 7: + if (D_801A8904 == 0) { + if (SsGetMute() == 0) { + D_801A8900 += 1; + } + } else { + D_801A8904 -= 1; + } + break; + case 8: + D_801A8908 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A8900; + +void func_80158BB0(void *arg0) { + if (D_801A8900 == 0) { + D_801A8900 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A890C; +extern s32 D_801855F4[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A890C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801855F4[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A8910; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A8910 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A8900; +extern s32 D_801A8908; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A8900 == 4) { + D_801A8900 = 5; + } + if (D_801A8908 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018565C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018565C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_801588CC", func_801594E8); + + +extern void (*D_80185870[])(void); + +void func_80159698(void *a0) { + D_80185870[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80185690)); + func_80028620(1, &(*(u8 *)&D_80185690) + 0x10); + func_80028620(2, &(*(u8 *)&D_80185690) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80185914[])(void); + +void func_80159968(void *a0) { + D_80185914[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80185A68[])(void); + +void func_80159B70(void *a0) { + D_80185A68[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80185884; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80185884); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_002/ov_SC04_002_jr_80154C24.c b/src/ov_SC04_002/ov_SC04_002_jr_80154C24.c index 7de24bb17..e0bcafb5e 100644 --- a/src/ov_SC04_002/ov_SC04_002_jr_80154C24.c +++ b/src/ov_SC04_002/ov_SC04_002_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018A78C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801BFC10; - -void func_80158BB0(void *arg0) { - if (D_801BFC10 == 0) { - D_801BFC10 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801BFC1C; -extern s32 D_8018A760[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801BFC1C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018A760[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801BFC20; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801BFC20 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801BFC10; -extern s32 D_801BFC18; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801BFC10 == 4) { - D_801BFC10 = 5; - } - if (D_801BFC18 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018A7C8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018A7C8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_80154C24", func_801594E8); - - -extern void (*D_8018A9DC[])(void); - -void func_80159698(void *a0) { - D_8018A9DC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018A7FC)); - func_80028620(1, &(*(u8 *)&D_8018A7FC) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018A7FC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018AA80[])(void); - -void func_80159968(void *a0) { - D_8018AA80[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018ABD4[])(void); - -void func_80159B70(void *a0) { - D_8018ABD4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018A9F0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018A9F0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_002/ov_SC04_002_jr_801588CC.c b/src/ov_SC04_002/ov_SC04_002_jr_801588CC.c new file mode 100644 index 000000000..7acff3713 --- /dev/null +++ b/src/ov_SC04_002/ov_SC04_002_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018A928; +extern u8 D_8018A898; +extern u8 D_8018A874; +extern u8 D_8018A850; +extern u8 D_8018A904; +extern u8 D_8018A8E0; +extern u8 D_8018A8BC; +extern u8 D_8018A82C; +extern void func_80145934(void); +extern u8 D_8018A9B8; +extern u8 D_8018A994; +extern u8 D_8018A970; +extern u8 D_8018A94C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80189DB0[]; +extern unsigned char D_80189DE0[]; +extern unsigned char D_80189E30[]; +extern unsigned char D_80189E60[]; +extern unsigned char D_80189E90[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80189EE0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80189FA8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018A030[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018A038; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801BFBD0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801BFBD4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018A068; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018A110[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018A134[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018A124; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018A148[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018A154[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018A164[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018A17C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018A16C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018A190[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018A1AC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018A19C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018A1C0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018A1D4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018A1E8; +extern void (*D_8018A210[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018A1F0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018A21C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018A25C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018A260[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018A454[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018A6C4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018A6D4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801BFC08; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018A6FC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018A6DC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018A6EC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018A73C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018A744[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018A710; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018A750[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018A720; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801BFC10; +extern s32 D_801BFC1C; +extern s32 D_801BFC20; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018A78C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801BFC10; +extern int D_801BFC1C; +extern int D_801BFC20; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018A790[])(void); + extern int D_801BFC14; + extern int D_801BFC18; + short sVar1; + + D_8018A790[*(unsigned short *)(param_1 + 2)](); + switch (D_801BFC10) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801BFC18 = 0; + D_801BFC14 = 0x46; + D_801BFC10 += 1; + break; + case 2: + if (D_801BFC14 == 0) { + if (SsGetMute() == 0) { + D_801BFC10 += 1; + } + } else { + D_801BFC14 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801BFC10 += 1; + } + break; + case 4: + D_801BFC1C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801BFC14 = 0xd2; + } else { + D_801BFC14 = 1; + } + break; + case 5: + D_801BFC14 -= 1; + if (D_801BFC14 == -1 || D_801BFC20 != 0) { + D_801BFC14 = 0; + D_801BFC10 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801BFC14 = 0x28; + D_801BFC10 += 1; + break; + case 7: + if (D_801BFC14 == 0) { + if (SsGetMute() == 0) { + D_801BFC10 += 1; + } + } else { + D_801BFC14 -= 1; + } + break; + case 8: + D_801BFC18 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801BFC10; + +void func_80158BB0(void *arg0) { + if (D_801BFC10 == 0) { + D_801BFC10 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801BFC1C; +extern s32 D_8018A760[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801BFC1C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018A760[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801BFC20; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801BFC20 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801BFC10; +extern s32 D_801BFC18; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801BFC10 == 4) { + D_801BFC10 = 5; + } + if (D_801BFC18 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018A7C8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018A7C8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_801588CC", func_801594E8); + + +extern void (*D_8018A9DC[])(void); + +void func_80159698(void *a0) { + D_8018A9DC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018A7FC)); + func_80028620(1, &(*(u8 *)&D_8018A7FC) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018A7FC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018AA80[])(void); + +void func_80159968(void *a0) { + D_8018AA80[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018ABD4[])(void); + +void func_80159B70(void *a0) { + D_8018ABD4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018A9F0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018A9F0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_003/ov_SC04_003_jr_80154C24.c b/src/ov_SC04_003/ov_SC04_003_jr_80154C24.c index 05c4ba5ef..162b8c32e 100644 --- a/src/ov_SC04_003/ov_SC04_003_jr_80154C24.c +++ b/src/ov_SC04_003/ov_SC04_003_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80184528[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019A878; - -void func_80158BB0(void *arg0) { - if (D_8019A878 == 0) { - D_8019A878 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019A884; -extern s32 D_801844FC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019A884; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801844FC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019A888; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019A888 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019A878; -extern s32 D_8019A880; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019A878 == 4) { - D_8019A878 = 5; - } - if (D_8019A880 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184564[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184564; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_80154C24", func_801594E8); - - -extern void (*D_80184778[])(void); - -void func_80159698(void *a0) { - D_80184778[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80184598)); - func_80028620(1, &(*(u8 *)&D_80184598) + 0x10); - func_80028620(2, &(*(u8 *)&D_80184598) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018481C[])(void); - -void func_80159968(void *a0) { - D_8018481C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80184970[])(void); - -void func_80159B70(void *a0) { - D_80184970[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018478C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018478C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_003/ov_SC04_003_jr_801588CC.c b/src/ov_SC04_003/ov_SC04_003_jr_801588CC.c new file mode 100644 index 000000000..81de7dd9b --- /dev/null +++ b/src/ov_SC04_003/ov_SC04_003_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801846C4; +extern u8 D_80184634; +extern u8 D_80184610; +extern u8 D_801845EC; +extern u8 D_801846A0; +extern u8 D_8018467C; +extern u8 D_80184658; +extern u8 D_801845C8; +extern void func_80145934(void); +extern u8 D_80184754; +extern u8 D_80184730; +extern u8 D_8018470C; +extern u8 D_801846E8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80183B4C[]; +extern unsigned char D_80183B7C[]; +extern unsigned char D_80183BCC[]; +extern unsigned char D_80183BFC[]; +extern unsigned char D_80183C2C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80183C7C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80183D44[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80183DCC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80183DD4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019A838; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019A83C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80183E04; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80183EAC[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80183ED0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80183EC0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80183EE4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80183EF0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80183F00[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80183F18[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183F08; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80183F2C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80183F48[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183F38; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80183F5C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80183F70[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80183F84; +extern void (*D_80183FAC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183F8C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80183FB8[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80183FF8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80183FFC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801841F0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184460[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184470[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019A870; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184498[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80184478; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80184488; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801844D8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801844E0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801844AC; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801844EC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801844BC; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019A878; +extern s32 D_8019A884; +extern s32 D_8019A888; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184528[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019A878; +extern int D_8019A884; +extern int D_8019A888; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018452C[])(void); + extern int D_8019A87C; + extern int D_8019A880; + short sVar1; + + D_8018452C[*(unsigned short *)(param_1 + 2)](); + switch (D_8019A878) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019A880 = 0; + D_8019A87C = 0x46; + D_8019A878 += 1; + break; + case 2: + if (D_8019A87C == 0) { + if (SsGetMute() == 0) { + D_8019A878 += 1; + } + } else { + D_8019A87C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019A878 += 1; + } + break; + case 4: + D_8019A884 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019A87C = 0xd2; + } else { + D_8019A87C = 1; + } + break; + case 5: + D_8019A87C -= 1; + if (D_8019A87C == -1 || D_8019A888 != 0) { + D_8019A87C = 0; + D_8019A878 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019A87C = 0x28; + D_8019A878 += 1; + break; + case 7: + if (D_8019A87C == 0) { + if (SsGetMute() == 0) { + D_8019A878 += 1; + } + } else { + D_8019A87C -= 1; + } + break; + case 8: + D_8019A880 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019A878; + +void func_80158BB0(void *arg0) { + if (D_8019A878 == 0) { + D_8019A878 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019A884; +extern s32 D_801844FC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019A884; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801844FC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019A888; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019A888 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019A878; +extern s32 D_8019A880; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019A878 == 4) { + D_8019A878 = 5; + } + if (D_8019A880 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184564[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184564; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_801588CC", func_801594E8); + + +extern void (*D_80184778[])(void); + +void func_80159698(void *a0) { + D_80184778[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80184598)); + func_80028620(1, &(*(u8 *)&D_80184598) + 0x10); + func_80028620(2, &(*(u8 *)&D_80184598) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018481C[])(void); + +void func_80159968(void *a0) { + D_8018481C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80184970[])(void); + +void func_80159B70(void *a0) { + D_80184970[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018478C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018478C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_004/ov_SC04_004_jr_80154C24.c b/src/ov_SC04_004/ov_SC04_004_jr_80154C24.c index fffe2ccfc..ad70d4f6f 100644 --- a/src/ov_SC04_004/ov_SC04_004_jr_80154C24.c +++ b/src/ov_SC04_004/ov_SC04_004_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80186A5C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B2678; - -void func_80158BB0(void *arg0) { - if (D_801B2678 == 0) { - D_801B2678 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B2684; -extern s32 D_80186A30[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B2684; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80186A30[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B2688; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B2688 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B2678; -extern s32 D_801B2680; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B2678 == 4) { - D_801B2678 = 5; - } - if (D_801B2680 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80186A98[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80186A98; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_80154C24", func_801594E8); - - -extern void (*D_80186CAC[])(void); - -void func_80159698(void *a0) { - D_80186CAC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80186ACC)); - func_80028620(1, &(*(u8 *)&D_80186ACC) + 0x10); - func_80028620(2, &(*(u8 *)&D_80186ACC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80186D50[])(void); - -void func_80159968(void *a0) { - D_80186D50[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80186EA4[])(void); - -void func_80159B70(void *a0) { - D_80186EA4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80186CC0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186CC0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_004/ov_SC04_004_jr_801588CC.c b/src/ov_SC04_004/ov_SC04_004_jr_801588CC.c new file mode 100644 index 000000000..c16f8e04b --- /dev/null +++ b/src/ov_SC04_004/ov_SC04_004_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80186BF8; +extern u8 D_80186B68; +extern u8 D_80186B44; +extern u8 D_80186B20; +extern u8 D_80186BD4; +extern u8 D_80186BB0; +extern u8 D_80186B8C; +extern u8 D_80186AFC; +extern void func_80145934(void); +extern u8 D_80186C88; +extern u8 D_80186C64; +extern u8 D_80186C40; +extern u8 D_80186C1C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80186080[]; +extern unsigned char D_801860B0[]; +extern unsigned char D_80186100[]; +extern unsigned char D_80186130[]; +extern unsigned char D_80186160[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801861B0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80186278[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80186300[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80186308; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B2638; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B263C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80186338; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801863E0[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80186404[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801863F4; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80186418[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80186424[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80186434[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018644C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018643C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80186460[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018647C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018646C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80186490[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801864A4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801864B8; +extern void (*D_801864E0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801864C0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801864EC[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018652C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80186530[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80186724[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80186994[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801869A4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B2670; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801869CC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801869AC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801869BC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80186A0C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80186A14[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801869E0; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80186A20[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801869F0; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B2678; +extern s32 D_801B2684; +extern s32 D_801B2688; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80186A5C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B2678; +extern int D_801B2684; +extern int D_801B2688; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80186A60[])(void); + extern int D_801B267C; + extern int D_801B2680; + short sVar1; + + D_80186A60[*(unsigned short *)(param_1 + 2)](); + switch (D_801B2678) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B2680 = 0; + D_801B267C = 0x46; + D_801B2678 += 1; + break; + case 2: + if (D_801B267C == 0) { + if (SsGetMute() == 0) { + D_801B2678 += 1; + } + } else { + D_801B267C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B2678 += 1; + } + break; + case 4: + D_801B2684 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B267C = 0xd2; + } else { + D_801B267C = 1; + } + break; + case 5: + D_801B267C -= 1; + if (D_801B267C == -1 || D_801B2688 != 0) { + D_801B267C = 0; + D_801B2678 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B267C = 0x28; + D_801B2678 += 1; + break; + case 7: + if (D_801B267C == 0) { + if (SsGetMute() == 0) { + D_801B2678 += 1; + } + } else { + D_801B267C -= 1; + } + break; + case 8: + D_801B2680 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B2678; + +void func_80158BB0(void *arg0) { + if (D_801B2678 == 0) { + D_801B2678 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B2684; +extern s32 D_80186A30[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B2684; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80186A30[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B2688; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B2688 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B2678; +extern s32 D_801B2680; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B2678 == 4) { + D_801B2678 = 5; + } + if (D_801B2680 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80186A98[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80186A98; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_801588CC", func_801594E8); + + +extern void (*D_80186CAC[])(void); + +void func_80159698(void *a0) { + D_80186CAC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80186ACC)); + func_80028620(1, &(*(u8 *)&D_80186ACC) + 0x10); + func_80028620(2, &(*(u8 *)&D_80186ACC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80186D50[])(void); + +void func_80159968(void *a0) { + D_80186D50[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80186EA4[])(void); + +void func_80159B70(void *a0) { + D_80186EA4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80186CC0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186CC0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_005/ov_SC04_005_jr_80154C24.c b/src/ov_SC04_005/ov_SC04_005_jr_80154C24.c index 84b333cf6..0edb947e0 100644 --- a/src/ov_SC04_005/ov_SC04_005_jr_80154C24.c +++ b/src/ov_SC04_005/ov_SC04_005_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80189E90[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801C0850; - -void func_80158BB0(void *arg0) { - if (D_801C0850 == 0) { - D_801C0850 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801C085C; -extern s32 D_80189E64[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C085C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80189E64[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801C0860; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C0860 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801C0850; -extern s32 D_801C0858; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801C0850 == 4) { - D_801C0850 = 5; - } - if (D_801C0858 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80189ECC[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80189ECC; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_80154C24", func_801594E8); - - -extern void (*D_8018A0E0[])(void); - -void func_80159698(void *a0) { - D_8018A0E0[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80189F00)); - func_80028620(1, &(*(u8 *)&D_80189F00) + 0x10); - func_80028620(2, &(*(u8 *)&D_80189F00) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018A184[])(void); - -void func_80159968(void *a0) { - D_8018A184[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018A2D8[])(void); - -void func_80159B70(void *a0) { - D_8018A2D8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018A0F4; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018A0F4); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_005/ov_SC04_005_jr_801588CC.c b/src/ov_SC04_005/ov_SC04_005_jr_801588CC.c new file mode 100644 index 000000000..1a813bafd --- /dev/null +++ b/src/ov_SC04_005/ov_SC04_005_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018A02C; +extern u8 D_80189F9C; +extern u8 D_80189F78; +extern u8 D_80189F54; +extern u8 D_8018A008; +extern u8 D_80189FE4; +extern u8 D_80189FC0; +extern u8 D_80189F30; +extern void func_80145934(void); +extern u8 D_8018A0BC; +extern u8 D_8018A098; +extern u8 D_8018A074; +extern u8 D_8018A050; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801894B4[]; +extern unsigned char D_801894E4[]; +extern unsigned char D_80189534[]; +extern unsigned char D_80189564[]; +extern unsigned char D_80189594[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801895E4[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801896AC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80189734[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018973C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801C0810; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801C0814; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018976C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80189814[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80189838[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80189828; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018984C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80189858[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80189868[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80189880[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80189870; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80189894[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801898B0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801898A0; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801898C4[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801898D8[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801898EC; +extern void (*D_80189914[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801898F4; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80189920[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80189960[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80189964[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80189B58[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80189DC8[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80189DD8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801C0848; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80189E00[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80189DE0; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80189DF0; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80189E40[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80189E48[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80189E14; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80189E54[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80189E24; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801C0850; +extern s32 D_801C085C; +extern s32 D_801C0860; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80189E90[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801C0850; +extern int D_801C085C; +extern int D_801C0860; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80189E94[])(void); + extern int D_801C0854; + extern int D_801C0858; + short sVar1; + + D_80189E94[*(unsigned short *)(param_1 + 2)](); + switch (D_801C0850) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C0858 = 0; + D_801C0854 = 0x46; + D_801C0850 += 1; + break; + case 2: + if (D_801C0854 == 0) { + if (SsGetMute() == 0) { + D_801C0850 += 1; + } + } else { + D_801C0854 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C0850 += 1; + } + break; + case 4: + D_801C085C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C0854 = 0xd2; + } else { + D_801C0854 = 1; + } + break; + case 5: + D_801C0854 -= 1; + if (D_801C0854 == -1 || D_801C0860 != 0) { + D_801C0854 = 0; + D_801C0850 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C0854 = 0x28; + D_801C0850 += 1; + break; + case 7: + if (D_801C0854 == 0) { + if (SsGetMute() == 0) { + D_801C0850 += 1; + } + } else { + D_801C0854 -= 1; + } + break; + case 8: + D_801C0858 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801C0850; + +void func_80158BB0(void *arg0) { + if (D_801C0850 == 0) { + D_801C0850 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801C085C; +extern s32 D_80189E64[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C085C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80189E64[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801C0860; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C0860 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801C0850; +extern s32 D_801C0858; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801C0850 == 4) { + D_801C0850 = 5; + } + if (D_801C0858 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80189ECC[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80189ECC; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_801588CC", func_801594E8); + + +extern void (*D_8018A0E0[])(void); + +void func_80159698(void *a0) { + D_8018A0E0[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80189F00)); + func_80028620(1, &(*(u8 *)&D_80189F00) + 0x10); + func_80028620(2, &(*(u8 *)&D_80189F00) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018A184[])(void); + +void func_80159968(void *a0) { + D_8018A184[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018A2D8[])(void); + +void func_80159B70(void *a0) { + D_8018A2D8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018A0F4; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018A0F4); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_006/ov_SC04_006_jr_80154C24.c b/src/ov_SC04_006/ov_SC04_006_jr_80154C24.c index 3a93c0324..4f18a4b66 100644 --- a/src/ov_SC04_006/ov_SC04_006_jr_80154C24.c +++ b/src/ov_SC04_006/ov_SC04_006_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80181F70[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019CAF8; - -void func_80158BB0(void *arg0) { - if (D_8019CAF8 == 0) { - D_8019CAF8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019CB04; -extern s32 D_80181F44[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019CB04; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80181F44[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019CB08; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019CB08 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019CAF8; -extern s32 D_8019CB00; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019CAF8 == 4) { - D_8019CAF8 = 5; - } - if (D_8019CB00 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80181FAC[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80181FAC; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_80154C24", func_801594E8); - - -extern void (*D_801821C0[])(void); - -void func_80159698(void *a0) { - D_801821C0[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80181FE0)); - func_80028620(1, &(*(u8 *)&D_80181FE0) + 0x10); - func_80028620(2, &(*(u8 *)&D_80181FE0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80182264[])(void); - -void func_80159968(void *a0) { - D_80182264[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801823B8[])(void); - -void func_80159B70(void *a0) { - D_801823B8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801821D4; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801821D4); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_006/ov_SC04_006_jr_801588CC.c b/src/ov_SC04_006/ov_SC04_006_jr_801588CC.c new file mode 100644 index 000000000..10280298f --- /dev/null +++ b/src/ov_SC04_006/ov_SC04_006_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018210C; +extern u8 D_8018207C; +extern u8 D_80182058; +extern u8 D_80182034; +extern u8 D_801820E8; +extern u8 D_801820C4; +extern u8 D_801820A0; +extern u8 D_80182010; +extern void func_80145934(void); +extern u8 D_8018219C; +extern u8 D_80182178; +extern u8 D_80182154; +extern u8 D_80182130; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80181594[]; +extern unsigned char D_801815C4[]; +extern unsigned char D_80181614[]; +extern unsigned char D_80181644[]; +extern unsigned char D_80181674[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801816C4[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018178C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80181814[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018181C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019CAB8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019CABC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018184C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801818F4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80181918[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80181908; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018192C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80181938[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80181948[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80181960[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181950; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80181974[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80181990[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181980; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801819A4[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801819B8[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801819CC; +extern void (*D_801819F4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801819D4; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80181A00[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80181A40[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80181A44[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80181C38[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80181EA8[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80181EB8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019CAF0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181EE0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80181EC0; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80181ED0; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80181F20[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80181F28[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181EF4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80181F34[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80181F04; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019CAF8; +extern s32 D_8019CB04; +extern s32 D_8019CB08; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181F70[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019CAF8; +extern int D_8019CB04; +extern int D_8019CB08; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80181F74[])(void); + extern int D_8019CAFC; + extern int D_8019CB00; + short sVar1; + + D_80181F74[*(unsigned short *)(param_1 + 2)](); + switch (D_8019CAF8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019CB00 = 0; + D_8019CAFC = 0x46; + D_8019CAF8 += 1; + break; + case 2: + if (D_8019CAFC == 0) { + if (SsGetMute() == 0) { + D_8019CAF8 += 1; + } + } else { + D_8019CAFC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019CAF8 += 1; + } + break; + case 4: + D_8019CB04 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019CAFC = 0xd2; + } else { + D_8019CAFC = 1; + } + break; + case 5: + D_8019CAFC -= 1; + if (D_8019CAFC == -1 || D_8019CB08 != 0) { + D_8019CAFC = 0; + D_8019CAF8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019CAFC = 0x28; + D_8019CAF8 += 1; + break; + case 7: + if (D_8019CAFC == 0) { + if (SsGetMute() == 0) { + D_8019CAF8 += 1; + } + } else { + D_8019CAFC -= 1; + } + break; + case 8: + D_8019CB00 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019CAF8; + +void func_80158BB0(void *arg0) { + if (D_8019CAF8 == 0) { + D_8019CAF8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019CB04; +extern s32 D_80181F44[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019CB04; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80181F44[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019CB08; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019CB08 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019CAF8; +extern s32 D_8019CB00; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019CAF8 == 4) { + D_8019CAF8 = 5; + } + if (D_8019CB00 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80181FAC[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80181FAC; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_801588CC", func_801594E8); + + +extern void (*D_801821C0[])(void); + +void func_80159698(void *a0) { + D_801821C0[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80181FE0)); + func_80028620(1, &(*(u8 *)&D_80181FE0) + 0x10); + func_80028620(2, &(*(u8 *)&D_80181FE0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80182264[])(void); + +void func_80159968(void *a0) { + D_80182264[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801823B8[])(void); + +void func_80159B70(void *a0) { + D_801823B8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801821D4; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801821D4); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_007/ov_SC04_007_jr_80154C24.c b/src/ov_SC04_007/ov_SC04_007_jr_80154C24.c index 07aec8f17..7ffd1d620 100644 --- a/src/ov_SC04_007/ov_SC04_007_jr_80154C24.c +++ b/src/ov_SC04_007/ov_SC04_007_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80187F28[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B40B0; - -void func_80158BB0(void *arg0) { - if (D_801B40B0 == 0) { - D_801B40B0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B40BC; -extern s32 D_80187EFC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B40BC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187EFC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B40C0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B40C0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B40B0; -extern s32 D_801B40B8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B40B0 == 4) { - D_801B40B0 = 5; - } - if (D_801B40B8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80187F64[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80187F64; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_80154C24", func_801594E8); - - -extern void (*D_80188178[])(void); - -void func_80159698(void *a0) { - D_80188178[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80187F98)); - func_80028620(1, &(*(u8 *)&D_80187F98) + 0x10); - func_80028620(2, &(*(u8 *)&D_80187F98) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018821C[])(void); - -void func_80159968(void *a0) { - D_8018821C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80188370[])(void); - -void func_80159B70(void *a0) { - D_80188370[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018818C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018818C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_007/ov_SC04_007_jr_801588CC.c b/src/ov_SC04_007/ov_SC04_007_jr_801588CC.c new file mode 100644 index 000000000..643e98ca4 --- /dev/null +++ b/src/ov_SC04_007/ov_SC04_007_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801880C4; +extern u8 D_80188034; +extern u8 D_80188010; +extern u8 D_80187FEC; +extern u8 D_801880A0; +extern u8 D_8018807C; +extern u8 D_80188058; +extern u8 D_80187FC8; +extern void func_80145934(void); +extern u8 D_80188154; +extern u8 D_80188130; +extern u8 D_8018810C; +extern u8 D_801880E8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018754C[]; +extern unsigned char D_8018757C[]; +extern unsigned char D_801875CC[]; +extern unsigned char D_801875FC[]; +extern unsigned char D_8018762C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018767C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80187744[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801877CC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801877D4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B4070; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B4074; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80187804; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801878AC[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801878D0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801878C0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801878E4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801878F0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80187900[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80187918[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187908; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018792C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80187948[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80187938; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018795C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80187970[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80187984; +extern void (*D_801879AC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018798C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801879B8[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801879F8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801879FC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80187BF0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80187E60[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80187E70[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B40A8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80187E98[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80187E78; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80187E88; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80187ED8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80187EE0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80187EAC; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80187EEC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80187EBC; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B40B0; +extern s32 D_801B40BC; +extern s32 D_801B40C0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187F28[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B40B0; +extern int D_801B40BC; +extern int D_801B40C0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80187F2C[])(void); + extern int D_801B40B4; + extern int D_801B40B8; + short sVar1; + + D_80187F2C[*(unsigned short *)(param_1 + 2)](); + switch (D_801B40B0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B40B8 = 0; + D_801B40B4 = 0x46; + D_801B40B0 += 1; + break; + case 2: + if (D_801B40B4 == 0) { + if (SsGetMute() == 0) { + D_801B40B0 += 1; + } + } else { + D_801B40B4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B40B0 += 1; + } + break; + case 4: + D_801B40BC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B40B4 = 0xd2; + } else { + D_801B40B4 = 1; + } + break; + case 5: + D_801B40B4 -= 1; + if (D_801B40B4 == -1 || D_801B40C0 != 0) { + D_801B40B4 = 0; + D_801B40B0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B40B4 = 0x28; + D_801B40B0 += 1; + break; + case 7: + if (D_801B40B4 == 0) { + if (SsGetMute() == 0) { + D_801B40B0 += 1; + } + } else { + D_801B40B4 -= 1; + } + break; + case 8: + D_801B40B8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B40B0; + +void func_80158BB0(void *arg0) { + if (D_801B40B0 == 0) { + D_801B40B0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B40BC; +extern s32 D_80187EFC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B40BC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187EFC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B40C0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B40C0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B40B0; +extern s32 D_801B40B8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B40B0 == 4) { + D_801B40B0 = 5; + } + if (D_801B40B8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80187F64[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80187F64; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_801588CC", func_801594E8); + + +extern void (*D_80188178[])(void); + +void func_80159698(void *a0) { + D_80188178[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80187F98)); + func_80028620(1, &(*(u8 *)&D_80187F98) + 0x10); + func_80028620(2, &(*(u8 *)&D_80187F98) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018821C[])(void); + +void func_80159968(void *a0) { + D_8018821C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80188370[])(void); + +void func_80159B70(void *a0) { + D_80188370[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018818C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018818C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_008/ov_SC04_008_jr_80154C24.c b/src/ov_SC04_008/ov_SC04_008_jr_80154C24.c index 6f8e720ea..1610e5e5e 100644 --- a/src/ov_SC04_008/ov_SC04_008_jr_80154C24.c +++ b/src/ov_SC04_008/ov_SC04_008_jr_80154C24.c @@ -1598,342 +1598,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180E60[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_80190D88; - -void func_80158BB0(void *arg0) { - if (D_80190D88 == 0) { - D_80190D88 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_80190D94; -extern s32 D_80180E34[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_80190D94; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180E34[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80190D98; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80190D98 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_80190D88; -extern s32 D_80190D90; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_80190D88 == 4) { - D_80190D88 = 5; - } - if (D_80190D90 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80180E9C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80180E9C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_80154C24", func_801594E8); - - -extern void (*D_801810B0[])(void); - -void func_80159698(void *a0) { - D_801810B0[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180ED0)); - func_80028620(1, &(*(u8 *)&D_80180ED0) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180ED0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80181154[])(void); - -void func_80159968(void *a0) { - D_80181154[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801812A8[])(void); - -void func_80159B70(void *a0) { - D_801812A8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801810C4; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801810C4); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_008/ov_SC04_008_jr_801588CC.c b/src/ov_SC04_008/ov_SC04_008_jr_801588CC.c new file mode 100644 index 000000000..07bf18566 --- /dev/null +++ b/src/ov_SC04_008/ov_SC04_008_jr_801588CC.c @@ -0,0 +1,1537 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80180FFC; +extern u8 D_80180F6C; +extern u8 D_80180F48; +extern u8 D_80180F24; +extern u8 D_80180FD8; +extern u8 D_80180FB4; +extern u8 D_80180F90; +extern u8 D_80180F00; +extern void func_80145934(void); +extern u8 D_8018108C; +extern u8 D_80181068; +extern u8 D_80181044; +extern u8 D_80181020; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80180484[]; +extern unsigned char D_801804B4[]; +extern unsigned char D_80180504[]; +extern unsigned char D_80180534[]; +extern unsigned char D_80180564[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801805B4[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80016714(void *a0, s32 a1); +extern void func_80146C3C(u8 *a0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern volatile s32 D_80127090; +extern volatile s32 D_80127094; +extern volatile s32 D_80127098; +extern void func_80147F78(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148D44(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_80149450(s32 a0, s16 *a1); +extern void func_801494CC(s32 a0, u16 *a1, u16 *a2); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern void func_8012EF70(s32, s32); +extern void func_801495C4(s32 a0, s32 a1); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014C088(s32 a0, s32 a1); +extern u8 func_80165658(s32 a0, s32 a1); +extern s32 func_801497A8(s32 *a0); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern s32 func_80144A04(s32 *a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern void func_8016EDEC(s32 a0, s32 a1); +extern void func_80149FA8(void); +extern s32 D_8018067C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern s32 func_8016F1C4(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_8014BD60(s32 a0, s32 a1); +extern void func_8014B084(void); +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180704[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern void func_8014C1C8(s32 a0, s32 a1, void* a2); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018070C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); /* canonical (engine_core.h:11555) */ +extern s32 func_8014E284(s32 a0, s16 *arg1, s16 *arg2); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_80190D48; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern s32 func_8014F4C0(s32 arg0); +extern int func_8014F6F4(void); +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_80190D4C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern S16 D_801903E0; +extern s32 D_8018073C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B28(int param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801807E4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180808[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801807F8; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018081C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80180828[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80180838[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80180850[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180840; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80180864[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void func_80152C80(s32* a0); +extern void (*D_80180880[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180870; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80180894[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801808A8[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801808BC; +extern void (*D_801808E4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801808C4; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801808F0[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80180930[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80180934[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80180B28[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80180D98[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80180DA8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_80190D80; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180DD0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180DB0; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180DC0; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180E10[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80180E18[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180DE4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80180E24[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180DF4; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_80190D88; +extern s32 D_80190D94; +extern s32 D_80190D98; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180E60[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_80190D88; +extern int D_80190D94; +extern int D_80190D98; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80180E64[])(void); + extern int D_80190D8C; + extern int D_80190D90; + short sVar1; + + D_80180E64[*(unsigned short *)(param_1 + 2)](); + switch (D_80190D88) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80190D90 = 0; + D_80190D8C = 0x46; + D_80190D88 += 1; + break; + case 2: + if (D_80190D8C == 0) { + if (SsGetMute() == 0) { + D_80190D88 += 1; + } + } else { + D_80190D8C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_80190D88 += 1; + } + break; + case 4: + D_80190D94 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_80190D8C = 0xd2; + } else { + D_80190D8C = 1; + } + break; + case 5: + D_80190D8C -= 1; + if (D_80190D8C == -1 || D_80190D98 != 0) { + D_80190D8C = 0; + D_80190D88 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_80190D8C = 0x28; + D_80190D88 += 1; + break; + case 7: + if (D_80190D8C == 0) { + if (SsGetMute() == 0) { + D_80190D88 += 1; + } + } else { + D_80190D8C -= 1; + } + break; + case 8: + D_80190D90 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_80190D88; + +void func_80158BB0(void *arg0) { + if (D_80190D88 == 0) { + D_80190D88 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_80190D94; +extern s32 D_80180E34[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_80190D94; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180E34[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80190D98; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80190D98 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_80190D88; +extern s32 D_80190D90; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_80190D88 == 4) { + D_80190D88 = 5; + } + if (D_80190D90 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80180E9C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80180E9C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_801588CC", func_801594E8); + + +extern void (*D_801810B0[])(void); + +void func_80159698(void *a0) { + D_801810B0[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180ED0)); + func_80028620(1, &(*(u8 *)&D_80180ED0) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180ED0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80181154[])(void); + +void func_80159968(void *a0) { + D_80181154[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801812A8[])(void); + +void func_80159B70(void *a0) { + D_801812A8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801810C4; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801810C4); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_009/ov_SC04_009_jr_80154C24.c b/src/ov_SC04_009/ov_SC04_009_jr_80154C24.c index 712aaae7d..9d8d9b193 100644 --- a/src/ov_SC04_009/ov_SC04_009_jr_80154C24.c +++ b/src/ov_SC04_009/ov_SC04_009_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180E8C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_80196F98; - -void func_80158BB0(void *arg0) { - if (D_80196F98 == 0) { - D_80196F98 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_80196FA4; -extern s32 D_80180E60[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_80196FA4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180E60[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80196FA8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80196FA8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_80196F98; -extern s32 D_80196FA0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_80196F98 == 4) { - D_80196F98 = 5; - } - if (D_80196FA0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80180EC8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80180EC8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_80154C24", func_801594E8); - - -extern void (*D_801810DC[])(void); - -void func_80159698(void *a0) { - D_801810DC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180EFC)); - func_80028620(1, &(*(u8 *)&D_80180EFC) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180EFC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80181180[])(void); - -void func_80159968(void *a0) { - D_80181180[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801812D4[])(void); - -void func_80159B70(void *a0) { - D_801812D4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801810F0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801810F0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_009/ov_SC04_009_jr_801588CC.c b/src/ov_SC04_009/ov_SC04_009_jr_801588CC.c new file mode 100644 index 000000000..94bc007e1 --- /dev/null +++ b/src/ov_SC04_009/ov_SC04_009_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80181028; +extern u8 D_80180F98; +extern u8 D_80180F74; +extern u8 D_80180F50; +extern u8 D_80181004; +extern u8 D_80180FE0; +extern u8 D_80180FBC; +extern u8 D_80180F2C; +extern void func_80145934(void); +extern u8 D_801810B8; +extern u8 D_80181094; +extern u8 D_80181070; +extern u8 D_8018104C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801804B0[]; +extern unsigned char D_801804E0[]; +extern unsigned char D_80180530[]; +extern unsigned char D_80180560[]; +extern unsigned char D_80180590[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801805E0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801806A8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180730[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180738; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_80196F58; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_80196F5C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180768; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80180810[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180834[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80180824; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80180848[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80180854[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80180864[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018087C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018086C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80180890[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801808AC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018089C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801808C0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801808D4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801808E8; +extern void (*D_80180910[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801808F0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018091C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018095C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80180960[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80180B54[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80180DC4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80180DD4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_80196F90; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180DFC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180DDC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180DEC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180E3C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80180E44[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180E10; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80180E50[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180E20; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_80196F98; +extern s32 D_80196FA4; +extern s32 D_80196FA8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180E8C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_80196F98; +extern int D_80196FA4; +extern int D_80196FA8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80180E90[])(void); + extern int D_80196F9C; + extern int D_80196FA0; + short sVar1; + + D_80180E90[*(unsigned short *)(param_1 + 2)](); + switch (D_80196F98) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80196FA0 = 0; + D_80196F9C = 0x46; + D_80196F98 += 1; + break; + case 2: + if (D_80196F9C == 0) { + if (SsGetMute() == 0) { + D_80196F98 += 1; + } + } else { + D_80196F9C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_80196F98 += 1; + } + break; + case 4: + D_80196FA4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_80196F9C = 0xd2; + } else { + D_80196F9C = 1; + } + break; + case 5: + D_80196F9C -= 1; + if (D_80196F9C == -1 || D_80196FA8 != 0) { + D_80196F9C = 0; + D_80196F98 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_80196F9C = 0x28; + D_80196F98 += 1; + break; + case 7: + if (D_80196F9C == 0) { + if (SsGetMute() == 0) { + D_80196F98 += 1; + } + } else { + D_80196F9C -= 1; + } + break; + case 8: + D_80196FA0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_80196F98; + +void func_80158BB0(void *arg0) { + if (D_80196F98 == 0) { + D_80196F98 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_80196FA4; +extern s32 D_80180E60[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_80196FA4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180E60[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80196FA8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80196FA8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_80196F98; +extern s32 D_80196FA0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_80196F98 == 4) { + D_80196F98 = 5; + } + if (D_80196FA0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80180EC8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80180EC8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_801588CC", func_801594E8); + + +extern void (*D_801810DC[])(void); + +void func_80159698(void *a0) { + D_801810DC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180EFC)); + func_80028620(1, &(*(u8 *)&D_80180EFC) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180EFC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80181180[])(void); + +void func_80159968(void *a0) { + D_80181180[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801812D4[])(void); + +void func_80159B70(void *a0) { + D_801812D4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801810F0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801810F0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_010/ov_SC04_010_jr_80154C24.c b/src/ov_SC04_010/ov_SC04_010_jr_80154C24.c index 95f2fa51d..c2a5df4c4 100644 --- a/src/ov_SC04_010/ov_SC04_010_jr_80154C24.c +++ b/src/ov_SC04_010/ov_SC04_010_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180538[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8018E430; - -void func_80158BB0(void *arg0) { - if (D_8018E430 == 0) { - D_8018E430 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8018E43C; -extern s32 D_8018050C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8018E43C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018050C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8018E440; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8018E440 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8018E430; -extern s32 D_8018E438; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8018E430 == 4) { - D_8018E430 = 5; - } - if (D_8018E438 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80180574[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80180574; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_80154C24", func_801594E8); - - -extern void (*D_80180788[])(void); - -void func_80159698(void *a0) { - D_80180788[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801805A8)); - func_80028620(1, &(*(u8 *)&D_801805A8) + 0x10); - func_80028620(2, &(*(u8 *)&D_801805A8) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018082C[])(void); - -void func_80159968(void *a0) { - D_8018082C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80180980[])(void); - -void func_80159B70(void *a0) { - D_80180980[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018079C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018079C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_010/ov_SC04_010_jr_801588CC.c b/src/ov_SC04_010/ov_SC04_010_jr_801588CC.c new file mode 100644 index 000000000..8d8fcec6d --- /dev/null +++ b/src/ov_SC04_010/ov_SC04_010_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801806D4; +extern u8 D_80180644; +extern u8 D_80180620; +extern u8 D_801805FC; +extern u8 D_801806B0; +extern u8 D_8018068C; +extern u8 D_80180668; +extern u8 D_801805D8; +extern void func_80145934(void); +extern u8 D_80180764; +extern u8 D_80180740; +extern u8 D_8018071C; +extern u8 D_801806F8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8017FB5C[]; +extern unsigned char D_8017FB8C[]; +extern unsigned char D_8017FBDC[]; +extern unsigned char D_8017FC0C[]; +extern unsigned char D_8017FC3C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8017FC8C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8017FD54[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8017FDDC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8017FDE4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8018E3F0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8018E3F4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8017FE14; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8017FEBC[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8017FEE0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8017FED0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8017FEF4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8017FF00[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8017FF10[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8017FF28[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FF18; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8017FF3C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8017FF58[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FF48; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8017FF6C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8017FF80[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8017FF94; +extern void (*D_8017FFBC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017FF9C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8017FFC8[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80180008[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018000C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80180200[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80180470[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80180480[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8018E428; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801804A8[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180488; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180498; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801804E8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801804F0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801804BC; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801804FC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801804CC; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8018E430; +extern s32 D_8018E43C; +extern s32 D_8018E440; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180538[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8018E430; +extern int D_8018E43C; +extern int D_8018E440; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018053C[])(void); + extern int D_8018E434; + extern int D_8018E438; + short sVar1; + + D_8018053C[*(unsigned short *)(param_1 + 2)](); + switch (D_8018E430) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8018E438 = 0; + D_8018E434 = 0x46; + D_8018E430 += 1; + break; + case 2: + if (D_8018E434 == 0) { + if (SsGetMute() == 0) { + D_8018E430 += 1; + } + } else { + D_8018E434 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8018E430 += 1; + } + break; + case 4: + D_8018E43C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8018E434 = 0xd2; + } else { + D_8018E434 = 1; + } + break; + case 5: + D_8018E434 -= 1; + if (D_8018E434 == -1 || D_8018E440 != 0) { + D_8018E434 = 0; + D_8018E430 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8018E434 = 0x28; + D_8018E430 += 1; + break; + case 7: + if (D_8018E434 == 0) { + if (SsGetMute() == 0) { + D_8018E430 += 1; + } + } else { + D_8018E434 -= 1; + } + break; + case 8: + D_8018E438 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8018E430; + +void func_80158BB0(void *arg0) { + if (D_8018E430 == 0) { + D_8018E430 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8018E43C; +extern s32 D_8018050C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8018E43C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018050C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8018E440; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8018E440 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8018E430; +extern s32 D_8018E438; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8018E430 == 4) { + D_8018E430 = 5; + } + if (D_8018E438 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80180574[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80180574; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_801588CC", func_801594E8); + + +extern void (*D_80180788[])(void); + +void func_80159698(void *a0) { + D_80180788[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801805A8)); + func_80028620(1, &(*(u8 *)&D_801805A8) + 0x10); + func_80028620(2, &(*(u8 *)&D_801805A8) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018082C[])(void); + +void func_80159968(void *a0) { + D_8018082C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80180980[])(void); + +void func_80159B70(void *a0) { + D_80180980[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018079C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018079C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_011/ov_SC04_011_jr_80154C24.c b/src/ov_SC04_011/ov_SC04_011_jr_80154C24.c index 9b03ea823..5e12517fe 100644 --- a/src/ov_SC04_011/ov_SC04_011_jr_80154C24.c +++ b/src/ov_SC04_011/ov_SC04_011_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801927C8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801EDB98; - -void func_80158BB0(void *arg0) { - if (D_801EDB98 == 0) { - D_801EDB98 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801EDBA4; -extern s32 D_8019279C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801EDBA4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8019279C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801EDBA8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801EDBA8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801EDB98; -extern s32 D_801EDBA0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801EDB98 == 4) { - D_801EDB98 = 5; - } - if (D_801EDBA0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80192804[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80192804; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_80154C24", func_801594E8); - - -extern void (*D_80192A18[])(void); - -void func_80159698(void *a0) { - D_80192A18[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80192838)); - func_80028620(1, &(*(u8 *)&D_80192838) + 0x10); - func_80028620(2, &(*(u8 *)&D_80192838) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80192ABC[])(void); - -void func_80159968(void *a0) { - D_80192ABC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80192C10[])(void); - -void func_80159B70(void *a0) { - D_80192C10[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80192A2C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80192A2C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_011/ov_SC04_011_jr_801588CC.c b/src/ov_SC04_011/ov_SC04_011_jr_801588CC.c new file mode 100644 index 000000000..64b9c6b2f --- /dev/null +++ b/src/ov_SC04_011/ov_SC04_011_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80192964; +extern u8 D_801928D4; +extern u8 D_801928B0; +extern u8 D_8019288C; +extern u8 D_80192940; +extern u8 D_8019291C; +extern u8 D_801928F8; +extern u8 D_80192868; +extern void func_80145934(void); +extern u8 D_801929F4; +extern u8 D_801929D0; +extern u8 D_801929AC; +extern u8 D_80192988; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80191DEC[]; +extern unsigned char D_80191E1C[]; +extern unsigned char D_80191E6C[]; +extern unsigned char D_80191E9C[]; +extern unsigned char D_80191ECC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80191F1C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80191FE4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8019206C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80192074; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801EDB58; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801EDB5C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801920A4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8019214C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80192170[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80192160; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80192184[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80192190[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801921A0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801921B8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801921A8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801921CC[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801921E8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801921D8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801921FC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80192210[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80192224; +extern void (*D_8019224C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8019222C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80192258[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80192298[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8019229C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80192490[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80192700[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80192710[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801EDB90; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80192738[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80192718; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80192728; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80192778[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80192780[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8019274C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8019278C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8019275C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801EDB98; +extern s32 D_801EDBA4; +extern s32 D_801EDBA8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801927C8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801EDB98; +extern int D_801EDBA4; +extern int D_801EDBA8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801927CC[])(void); + extern int D_801EDB9C; + extern int D_801EDBA0; + short sVar1; + + D_801927CC[*(unsigned short *)(param_1 + 2)](); + switch (D_801EDB98) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801EDBA0 = 0; + D_801EDB9C = 0x46; + D_801EDB98 += 1; + break; + case 2: + if (D_801EDB9C == 0) { + if (SsGetMute() == 0) { + D_801EDB98 += 1; + } + } else { + D_801EDB9C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801EDB98 += 1; + } + break; + case 4: + D_801EDBA4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801EDB9C = 0xd2; + } else { + D_801EDB9C = 1; + } + break; + case 5: + D_801EDB9C -= 1; + if (D_801EDB9C == -1 || D_801EDBA8 != 0) { + D_801EDB9C = 0; + D_801EDB98 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801EDB9C = 0x28; + D_801EDB98 += 1; + break; + case 7: + if (D_801EDB9C == 0) { + if (SsGetMute() == 0) { + D_801EDB98 += 1; + } + } else { + D_801EDB9C -= 1; + } + break; + case 8: + D_801EDBA0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801EDB98; + +void func_80158BB0(void *arg0) { + if (D_801EDB98 == 0) { + D_801EDB98 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801EDBA4; +extern s32 D_8019279C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801EDBA4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8019279C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801EDBA8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801EDBA8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801EDB98; +extern s32 D_801EDBA0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801EDB98 == 4) { + D_801EDB98 = 5; + } + if (D_801EDBA0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80192804[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80192804; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_801588CC", func_801594E8); + + +extern void (*D_80192A18[])(void); + +void func_80159698(void *a0) { + D_80192A18[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80192838)); + func_80028620(1, &(*(u8 *)&D_80192838) + 0x10); + func_80028620(2, &(*(u8 *)&D_80192838) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80192ABC[])(void); + +void func_80159968(void *a0) { + D_80192ABC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80192C10[])(void); + +void func_80159B70(void *a0) { + D_80192C10[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80192A2C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80192A2C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_012/ov_SC04_012_jr_80154C24.c b/src/ov_SC04_012/ov_SC04_012_jr_80154C24.c index b92eb05d1..867a7b4a3 100644 --- a/src/ov_SC04_012/ov_SC04_012_jr_80154C24.c +++ b/src/ov_SC04_012/ov_SC04_012_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018099C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_80190B08; - -void func_80158BB0(void *arg0) { - if (D_80190B08 == 0) { - D_80190B08 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_80190B14; -extern s32 D_80180970[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_80190B14; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180970[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80190B18; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80190B18 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_80190B08; -extern s32 D_80190B10; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_80190B08 == 4) { - D_80190B08 = 5; - } - if (D_80190B10 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801809D8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801809D8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_80154C24", func_801594E8); - - -extern void (*D_80180BEC[])(void); - -void func_80159698(void *a0) { - D_80180BEC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180A0C)); - func_80028620(1, &(*(u8 *)&D_80180A0C) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180A0C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80180C90[])(void); - -void func_80159968(void *a0) { - D_80180C90[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80180DE4[])(void); - -void func_80159B70(void *a0) { - D_80180DE4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80180C00; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80180C00); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_012/ov_SC04_012_jr_801588CC.c b/src/ov_SC04_012/ov_SC04_012_jr_801588CC.c new file mode 100644 index 000000000..53f17e062 --- /dev/null +++ b/src/ov_SC04_012/ov_SC04_012_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80180B38; +extern u8 D_80180AA8; +extern u8 D_80180A84; +extern u8 D_80180A60; +extern u8 D_80180B14; +extern u8 D_80180AF0; +extern u8 D_80180ACC; +extern u8 D_80180A3C; +extern void func_80145934(void); +extern u8 D_80180BC8; +extern u8 D_80180BA4; +extern u8 D_80180B80; +extern u8 D_80180B5C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8017FFC0[]; +extern unsigned char D_8017FFF0[]; +extern unsigned char D_80180040[]; +extern unsigned char D_80180070[]; +extern unsigned char D_801800A0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801800F0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801801B8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180240[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180248; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_80190AC8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_80190ACC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180278; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80180320[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180344[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80180334; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80180358[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80180364[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80180374[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018038C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018037C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801803A0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801803BC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801803AC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801803D0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801803E4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801803F8; +extern void (*D_80180420[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180400; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018042C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018046C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80180470[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80180664[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801808D4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801808E4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_80190B00; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018090C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801808EC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801808FC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018094C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80180954[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180920; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80180960[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180930; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_80190B08; +extern s32 D_80190B14; +extern s32 D_80190B18; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018099C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_80190B08; +extern int D_80190B14; +extern int D_80190B18; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801809A0[])(void); + extern int D_80190B0C; + extern int D_80190B10; + short sVar1; + + D_801809A0[*(unsigned short *)(param_1 + 2)](); + switch (D_80190B08) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80190B10 = 0; + D_80190B0C = 0x46; + D_80190B08 += 1; + break; + case 2: + if (D_80190B0C == 0) { + if (SsGetMute() == 0) { + D_80190B08 += 1; + } + } else { + D_80190B0C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_80190B08 += 1; + } + break; + case 4: + D_80190B14 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_80190B0C = 0xd2; + } else { + D_80190B0C = 1; + } + break; + case 5: + D_80190B0C -= 1; + if (D_80190B0C == -1 || D_80190B18 != 0) { + D_80190B0C = 0; + D_80190B08 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_80190B0C = 0x28; + D_80190B08 += 1; + break; + case 7: + if (D_80190B0C == 0) { + if (SsGetMute() == 0) { + D_80190B08 += 1; + } + } else { + D_80190B0C -= 1; + } + break; + case 8: + D_80190B10 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_80190B08; + +void func_80158BB0(void *arg0) { + if (D_80190B08 == 0) { + D_80190B08 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_80190B14; +extern s32 D_80180970[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_80190B14; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180970[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80190B18; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80190B18 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_80190B08; +extern s32 D_80190B10; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_80190B08 == 4) { + D_80190B08 = 5; + } + if (D_80190B10 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801809D8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801809D8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_801588CC", func_801594E8); + + +extern void (*D_80180BEC[])(void); + +void func_80159698(void *a0) { + D_80180BEC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180A0C)); + func_80028620(1, &(*(u8 *)&D_80180A0C) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180A0C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80180C90[])(void); + +void func_80159968(void *a0) { + D_80180C90[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80180DE4[])(void); + +void func_80159B70(void *a0) { + D_80180DE4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80180C00; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80180C00); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_015/ov_SC04_015_jr_80154C24.c b/src/ov_SC04_015/ov_SC04_015_jr_80154C24.c index c39718845..60d46474f 100644 --- a/src/ov_SC04_015/ov_SC04_015_jr_80154C24.c +++ b/src/ov_SC04_015/ov_SC04_015_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801868D4[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801C77F0; - -void func_80158BB0(void *arg0) { - if (D_801C77F0 == 0) { - D_801C77F0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801C77FC; -extern s32 D_801868A8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C77FC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801868A8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801C7800; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C7800 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801C77F0; -extern s32 D_801C77F8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801C77F0 == 4) { - D_801C77F0 = 5; - } - if (D_801C77F8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80186910[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80186910; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_80154C24", func_801594E8); - - -extern void (*D_80186B24[])(void); - -void func_80159698(void *a0) { - D_80186B24[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80186944)); - func_80028620(1, &(*(u8 *)&D_80186944) + 0x10); - func_80028620(2, &(*(u8 *)&D_80186944) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80186BC8[])(void); - -void func_80159968(void *a0) { - D_80186BC8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80186D1C[])(void); - -void func_80159B70(void *a0) { - D_80186D1C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80186B38; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186B38); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_015/ov_SC04_015_jr_801588CC.c b/src/ov_SC04_015/ov_SC04_015_jr_801588CC.c new file mode 100644 index 000000000..7d3c2c3f1 --- /dev/null +++ b/src/ov_SC04_015/ov_SC04_015_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80186A70; +extern u8 D_801869E0; +extern u8 D_801869BC; +extern u8 D_80186998; +extern u8 D_80186A4C; +extern u8 D_80186A28; +extern u8 D_80186A04; +extern u8 D_80186974; +extern void func_80145934(void); +extern u8 D_80186B00; +extern u8 D_80186ADC; +extern u8 D_80186AB8; +extern u8 D_80186A94; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80185EF8[]; +extern unsigned char D_80185F28[]; +extern unsigned char D_80185F78[]; +extern unsigned char D_80185FA8[]; +extern unsigned char D_80185FD8[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80186028[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801860F0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80186178[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80186180; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801C77B0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801C77B4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801861B0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80186258[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018627C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018626C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80186290[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018629C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801862AC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801862C4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801862B4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801862D8[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801862F4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801862E4; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80186308[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018631C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80186330; +extern void (*D_80186358[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186338; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80186364[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801863A4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801863A8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018659C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018680C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018681C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801C77E8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186844[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80186824; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80186834; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80186884[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018688C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186858; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80186898[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80186868; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801C77F0; +extern s32 D_801C77FC; +extern s32 D_801C7800; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801868D4[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801C77F0; +extern int D_801C77FC; +extern int D_801C7800; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801868D8[])(void); + extern int D_801C77F4; + extern int D_801C77F8; + short sVar1; + + D_801868D8[*(unsigned short *)(param_1 + 2)](); + switch (D_801C77F0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C77F8 = 0; + D_801C77F4 = 0x46; + D_801C77F0 += 1; + break; + case 2: + if (D_801C77F4 == 0) { + if (SsGetMute() == 0) { + D_801C77F0 += 1; + } + } else { + D_801C77F4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C77F0 += 1; + } + break; + case 4: + D_801C77FC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C77F4 = 0xd2; + } else { + D_801C77F4 = 1; + } + break; + case 5: + D_801C77F4 -= 1; + if (D_801C77F4 == -1 || D_801C7800 != 0) { + D_801C77F4 = 0; + D_801C77F0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C77F4 = 0x28; + D_801C77F0 += 1; + break; + case 7: + if (D_801C77F4 == 0) { + if (SsGetMute() == 0) { + D_801C77F0 += 1; + } + } else { + D_801C77F4 -= 1; + } + break; + case 8: + D_801C77F8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801C77F0; + +void func_80158BB0(void *arg0) { + if (D_801C77F0 == 0) { + D_801C77F0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801C77FC; +extern s32 D_801868A8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C77FC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801868A8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801C7800; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C7800 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801C77F0; +extern s32 D_801C77F8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801C77F0 == 4) { + D_801C77F0 = 5; + } + if (D_801C77F8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80186910[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80186910; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_801588CC", func_801594E8); + + +extern void (*D_80186B24[])(void); + +void func_80159698(void *a0) { + D_80186B24[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80186944)); + func_80028620(1, &(*(u8 *)&D_80186944) + 0x10); + func_80028620(2, &(*(u8 *)&D_80186944) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80186BC8[])(void); + +void func_80159968(void *a0) { + D_80186BC8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80186D1C[])(void); + +void func_80159B70(void *a0) { + D_80186D1C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80186B38; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80186B38); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_016/ov_SC04_016_jr_80154C24.c b/src/ov_SC04_016/ov_SC04_016_jr_80154C24.c index 424e3652f..29dc17a35 100644 --- a/src/ov_SC04_016/ov_SC04_016_jr_80154C24.c +++ b/src/ov_SC04_016/ov_SC04_016_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80182398[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A5998; - -void func_80158BB0(void *arg0) { - if (D_801A5998 == 0) { - D_801A5998 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A59A4; -extern s32 D_8018236C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A59A4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018236C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A59A8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A59A8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A5998; -extern s32 D_801A59A0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A5998 == 4) { - D_801A5998 = 5; - } - if (D_801A59A0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801823D4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801823D4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_80154C24", func_801594E8); - - -extern void (*D_801825E8[])(void); - -void func_80159698(void *a0) { - D_801825E8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80182408)); - func_80028620(1, &(*(u8 *)&D_80182408) + 0x10); - func_80028620(2, &(*(u8 *)&D_80182408) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018268C[])(void); - -void func_80159968(void *a0) { - D_8018268C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801827E0[])(void); - -void func_80159B70(void *a0) { - D_801827E0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801825FC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801825FC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_016/ov_SC04_016_jr_801588CC.c b/src/ov_SC04_016/ov_SC04_016_jr_801588CC.c new file mode 100644 index 000000000..14b88ceba --- /dev/null +++ b/src/ov_SC04_016/ov_SC04_016_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80182534; +extern u8 D_801824A4; +extern u8 D_80182480; +extern u8 D_8018245C; +extern u8 D_80182510; +extern u8 D_801824EC; +extern u8 D_801824C8; +extern u8 D_80182438; +extern void func_80145934(void); +extern u8 D_801825C4; +extern u8 D_801825A0; +extern u8 D_8018257C; +extern u8 D_80182558; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801819BC[]; +extern unsigned char D_801819EC[]; +extern unsigned char D_80181A3C[]; +extern unsigned char D_80181A6C[]; +extern unsigned char D_80181A9C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80181AEC[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80181BB4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80181C3C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80181C44; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A5958; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A595C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80181C74; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80181D1C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80181D40[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80181D30; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80181D54[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80181D60[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80181D70[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80181D88[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181D78; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80181D9C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80181DB8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181DA8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80181DCC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80181DE0[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80181DF4; +extern void (*D_80181E1C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181DFC; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80181E28[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80181E68[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80181E6C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80182060[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801822D0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801822E0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A5990; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182308[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801822E8; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801822F8; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80182348[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80182350[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018231C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018235C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018232C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A5998; +extern s32 D_801A59A4; +extern s32 D_801A59A8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80182398[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A5998; +extern int D_801A59A4; +extern int D_801A59A8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018239C[])(void); + extern int D_801A599C; + extern int D_801A59A0; + short sVar1; + + D_8018239C[*(unsigned short *)(param_1 + 2)](); + switch (D_801A5998) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A59A0 = 0; + D_801A599C = 0x46; + D_801A5998 += 1; + break; + case 2: + if (D_801A599C == 0) { + if (SsGetMute() == 0) { + D_801A5998 += 1; + } + } else { + D_801A599C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A5998 += 1; + } + break; + case 4: + D_801A59A4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A599C = 0xd2; + } else { + D_801A599C = 1; + } + break; + case 5: + D_801A599C -= 1; + if (D_801A599C == -1 || D_801A59A8 != 0) { + D_801A599C = 0; + D_801A5998 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A599C = 0x28; + D_801A5998 += 1; + break; + case 7: + if (D_801A599C == 0) { + if (SsGetMute() == 0) { + D_801A5998 += 1; + } + } else { + D_801A599C -= 1; + } + break; + case 8: + D_801A59A0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A5998; + +void func_80158BB0(void *arg0) { + if (D_801A5998 == 0) { + D_801A5998 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A59A4; +extern s32 D_8018236C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A59A4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018236C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A59A8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A59A8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A5998; +extern s32 D_801A59A0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A5998 == 4) { + D_801A5998 = 5; + } + if (D_801A59A0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801823D4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801823D4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_801588CC", func_801594E8); + + +extern void (*D_801825E8[])(void); + +void func_80159698(void *a0) { + D_801825E8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80182408)); + func_80028620(1, &(*(u8 *)&D_80182408) + 0x10); + func_80028620(2, &(*(u8 *)&D_80182408) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018268C[])(void); + +void func_80159968(void *a0) { + D_8018268C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801827E0[])(void); + +void func_80159B70(void *a0) { + D_801827E0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801825FC; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801825FC); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_018/ov_SC04_018_jr_80154C24.c b/src/ov_SC04_018/ov_SC04_018_jr_80154C24.c index e3e752aa6..d106a9902 100644 --- a/src/ov_SC04_018/ov_SC04_018_jr_80154C24.c +++ b/src/ov_SC04_018/ov_SC04_018_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018F5B0[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E5BE8; - -void func_80158BB0(void *arg0) { - if (D_801E5BE8 == 0) { - D_801E5BE8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E5BF4; -extern s32 D_8018F584[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E5BF4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018F584[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E5BF8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E5BF8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BE8; -extern s32 D_801E5BF0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E5BE8 == 4) { - D_801E5BE8 = 5; - } - if (D_801E5BF0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018F5EC[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018F5EC; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80154C24", func_801594E8); - - -extern void (*D_8018F800[])(void); - -void func_80159698(void *a0) { - D_8018F800[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018F620)); - func_80028620(1, &(*(u8 *)&D_8018F620) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018F620) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018F8A4[])(void); - -void func_80159968(void *a0) { - D_8018F8A4[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018F9F8[])(void); - -void func_80159B70(void *a0) { - D_8018F9F8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018F814; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018F814); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_018/ov_SC04_018_jr_801588CC.c b/src/ov_SC04_018/ov_SC04_018_jr_801588CC.c new file mode 100644 index 000000000..9ce40e2e7 --- /dev/null +++ b/src/ov_SC04_018/ov_SC04_018_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018F74C; +extern u8 D_8018F6BC; +extern u8 D_8018F698; +extern u8 D_8018F674; +extern u8 D_8018F728; +extern u8 D_8018F704; +extern u8 D_8018F6E0; +extern u8 D_8018F650; +extern void func_80145934(void); +extern u8 D_8018F7DC; +extern u8 D_8018F7B8; +extern u8 D_8018F794; +extern u8 D_8018F770; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018EBD4[]; +extern unsigned char D_8018EC04[]; +extern unsigned char D_8018EC54[]; +extern unsigned char D_8018EC84[]; +extern unsigned char D_8018ECB4[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018ED04[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018EDCC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018EE54[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018EE5C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E5BA8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E5BAC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018EE8C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018EF34[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018EF58[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018EF48; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018EF6C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018EF78[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018EF88[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018EFA0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018EF90; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018EFB4[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018EFD0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018EFC0; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018EFE4[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018EFF8[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018F00C; +extern void (*D_8018F034[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018F014; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018F040[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018F080[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018F084[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018F278[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018F4E8[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018F4F8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E5BE0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018F520[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018F500; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018F510; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018F560[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018F568[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018F534; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018F574[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018F544; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E5BE8; +extern s32 D_801E5BF4; +extern s32 D_801E5BF8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018F5B0[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801E5BE8; +extern int D_801E5BF4; +extern int D_801E5BF8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018F5B4[])(void); + extern int D_801E5BEC; + extern int D_801E5BF0; + short sVar1; + + D_8018F5B4[*(unsigned short *)(param_1 + 2)](); + switch (D_801E5BE8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801E5BF0 = 0; + D_801E5BEC = 0x46; + D_801E5BE8 += 1; + break; + case 2: + if (D_801E5BEC == 0) { + if (SsGetMute() == 0) { + D_801E5BE8 += 1; + } + } else { + D_801E5BEC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801E5BE8 += 1; + } + break; + case 4: + D_801E5BF4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801E5BEC = 0xd2; + } else { + D_801E5BEC = 1; + } + break; + case 5: + D_801E5BEC -= 1; + if (D_801E5BEC == -1 || D_801E5BF8 != 0) { + D_801E5BEC = 0; + D_801E5BE8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801E5BEC = 0x28; + D_801E5BE8 += 1; + break; + case 7: + if (D_801E5BEC == 0) { + if (SsGetMute() == 0) { + D_801E5BE8 += 1; + } + } else { + D_801E5BEC -= 1; + } + break; + case 8: + D_801E5BF0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801E5BE8; + +void func_80158BB0(void *arg0) { + if (D_801E5BE8 == 0) { + D_801E5BE8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801E5BF4; +extern s32 D_8018F584[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801E5BF4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018F584[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801E5BF8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801E5BF8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801E5BE8; +extern s32 D_801E5BF0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801E5BE8 == 4) { + D_801E5BE8 = 5; + } + if (D_801E5BF0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018F5EC[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018F5EC; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_801588CC", func_801594E8); + + +extern void (*D_8018F800[])(void); + +void func_80159698(void *a0) { + D_8018F800[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018F620)); + func_80028620(1, &(*(u8 *)&D_8018F620) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018F620) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018F8A4[])(void); + +void func_80159968(void *a0) { + D_8018F8A4[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018F9F8[])(void); + +void func_80159B70(void *a0) { + D_8018F9F8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018F814; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018F814); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80154C24.c b/src/ov_SC04_019/ov_SC04_019_jr_80154C24.c index 6656ebc23..9551b7562 100644 --- a/src/ov_SC04_019/ov_SC04_019_jr_80154C24.c +++ b/src/ov_SC04_019/ov_SC04_019_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018F5B0[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E5BE8; - -void func_80158BB0(void *arg0) { - if (D_801E5BE8 == 0) { - D_801E5BE8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E5BF4; -extern s32 D_8018F584[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E5BF4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018F584[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E5BF8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E5BF8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BE8; -extern s32 D_801E5BF0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E5BE8 == 4) { - D_801E5BE8 = 5; - } - if (D_801E5BF0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018F5EC[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018F5EC; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80154C24", func_801594E8); - - -extern void (*D_8018F800[])(void); - -void func_80159698(void *a0) { - D_8018F800[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018F620)); - func_80028620(1, &(*(u8 *)&D_8018F620) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018F620) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018F8A4[])(void); - -void func_80159968(void *a0) { - D_8018F8A4[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018F9F8[])(void); - -void func_80159B70(void *a0) { - D_8018F9F8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018F814; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018F814); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_801588CC.c b/src/ov_SC04_019/ov_SC04_019_jr_801588CC.c new file mode 100644 index 000000000..5884e8723 --- /dev/null +++ b/src/ov_SC04_019/ov_SC04_019_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018F74C; +extern u8 D_8018F6BC; +extern u8 D_8018F698; +extern u8 D_8018F674; +extern u8 D_8018F728; +extern u8 D_8018F704; +extern u8 D_8018F6E0; +extern u8 D_8018F650; +extern void func_80145934(void); +extern u8 D_8018F7DC; +extern u8 D_8018F7B8; +extern u8 D_8018F794; +extern u8 D_8018F770; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018EBD4[]; +extern unsigned char D_8018EC04[]; +extern unsigned char D_8018EC54[]; +extern unsigned char D_8018EC84[]; +extern unsigned char D_8018ECB4[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018ED04[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018EDCC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018EE54[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018EE5C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E5BA8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E5BAC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018EE8C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018EF34[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018EF58[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018EF48; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018EF6C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018EF78[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018EF88[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018EFA0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018EF90; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018EFB4[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018EFD0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018EFC0; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018EFE4[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018EFF8[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018F00C; +extern void (*D_8018F034[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018F014; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018F040[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018F080[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018F084[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018F278[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018F4E8[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018F4F8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E5BE0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018F520[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018F500; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018F510; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018F560[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018F568[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018F534; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018F574[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018F544; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E5BE8; +extern s32 D_801E5BF4; +extern s32 D_801E5BF8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018F5B0[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801E5BE8; +extern int D_801E5BF4; +extern int D_801E5BF8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018F5B4[])(void); + extern int D_801E5BEC; + extern int D_801E5BF0; + short sVar1; + + D_8018F5B4[*(unsigned short *)(param_1 + 2)](); + switch (D_801E5BE8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801E5BF0 = 0; + D_801E5BEC = 0x46; + D_801E5BE8 += 1; + break; + case 2: + if (D_801E5BEC == 0) { + if (SsGetMute() == 0) { + D_801E5BE8 += 1; + } + } else { + D_801E5BEC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801E5BE8 += 1; + } + break; + case 4: + D_801E5BF4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801E5BEC = 0xd2; + } else { + D_801E5BEC = 1; + } + break; + case 5: + D_801E5BEC -= 1; + if (D_801E5BEC == -1 || D_801E5BF8 != 0) { + D_801E5BEC = 0; + D_801E5BE8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801E5BEC = 0x28; + D_801E5BE8 += 1; + break; + case 7: + if (D_801E5BEC == 0) { + if (SsGetMute() == 0) { + D_801E5BE8 += 1; + } + } else { + D_801E5BEC -= 1; + } + break; + case 8: + D_801E5BF0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801E5BE8; + +void func_80158BB0(void *arg0) { + if (D_801E5BE8 == 0) { + D_801E5BE8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801E5BF4; +extern s32 D_8018F584[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801E5BF4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018F584[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801E5BF8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801E5BF8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801E5BE8; +extern s32 D_801E5BF0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801E5BE8 == 4) { + D_801E5BE8 = 5; + } + if (D_801E5BF0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018F5EC[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018F5EC; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_801588CC", func_801594E8); + + +extern void (*D_8018F800[])(void); + +void func_80159698(void *a0) { + D_8018F800[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018F620)); + func_80028620(1, &(*(u8 *)&D_8018F620) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018F620) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018F8A4[])(void); + +void func_80159968(void *a0) { + D_8018F8A4[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018F9F8[])(void); + +void func_80159B70(void *a0) { + D_8018F9F8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018F814; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018F814); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_020/ov_SC04_020_jr_80154C24.c b/src/ov_SC04_020/ov_SC04_020_jr_80154C24.c index 2c1f5f6cb..acf185f3e 100644 --- a/src/ov_SC04_020/ov_SC04_020_jr_80154C24.c +++ b/src/ov_SC04_020/ov_SC04_020_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801856E8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801BB1F8; - -void func_80158BB0(void *arg0) { - if (D_801BB1F8 == 0) { - D_801BB1F8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801BB204; -extern s32 D_801856BC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801BB204; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801856BC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801BB208; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801BB208 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801BB1F8; -extern s32 D_801BB200; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801BB1F8 == 4) { - D_801BB1F8 = 5; - } - if (D_801BB200 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80185724[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80185724; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_80154C24", func_801594E8); - - -extern void (*D_80185938[])(void); - -void func_80159698(void *a0) { - D_80185938[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80185758)); - func_80028620(1, &(*(u8 *)&D_80185758) + 0x10); - func_80028620(2, &(*(u8 *)&D_80185758) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801859DC[])(void); - -void func_80159968(void *a0) { - D_801859DC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80185B30[])(void); - -void func_80159B70(void *a0) { - D_80185B30[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018594C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018594C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_020/ov_SC04_020_jr_801588CC.c b/src/ov_SC04_020/ov_SC04_020_jr_801588CC.c new file mode 100644 index 000000000..76d0b5fab --- /dev/null +++ b/src/ov_SC04_020/ov_SC04_020_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80185884; +extern u8 D_801857F4; +extern u8 D_801857D0; +extern u8 D_801857AC; +extern u8 D_80185860; +extern u8 D_8018583C; +extern u8 D_80185818; +extern u8 D_80185788; +extern void func_80145934(void); +extern u8 D_80185914; +extern u8 D_801858F0; +extern u8 D_801858CC; +extern u8 D_801858A8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80184D0C[]; +extern unsigned char D_80184D3C[]; +extern unsigned char D_80184D8C[]; +extern unsigned char D_80184DBC[]; +extern unsigned char D_80184DEC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80184E3C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80184F04[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80184F8C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80184F94; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801BB1B8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801BB1BC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80184FC4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018506C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80185090[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80185080; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801850A4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801850B0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801850C0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801850D8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801850C8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801850EC[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80185108[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801850F8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018511C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80185130[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80185144; +extern void (*D_8018516C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018514C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80185178[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801851B8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801851BC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801853B0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80185620[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80185630[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801BB1F0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80185658[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80185638; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80185648; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80185698[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801856A0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018566C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801856AC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018567C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801BB1F8; +extern s32 D_801BB204; +extern s32 D_801BB208; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801856E8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801BB1F8; +extern int D_801BB204; +extern int D_801BB208; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801856EC[])(void); + extern int D_801BB1FC; + extern int D_801BB200; + short sVar1; + + D_801856EC[*(unsigned short *)(param_1 + 2)](); + switch (D_801BB1F8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801BB200 = 0; + D_801BB1FC = 0x46; + D_801BB1F8 += 1; + break; + case 2: + if (D_801BB1FC == 0) { + if (SsGetMute() == 0) { + D_801BB1F8 += 1; + } + } else { + D_801BB1FC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801BB1F8 += 1; + } + break; + case 4: + D_801BB204 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801BB1FC = 0xd2; + } else { + D_801BB1FC = 1; + } + break; + case 5: + D_801BB1FC -= 1; + if (D_801BB1FC == -1 || D_801BB208 != 0) { + D_801BB1FC = 0; + D_801BB1F8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801BB1FC = 0x28; + D_801BB1F8 += 1; + break; + case 7: + if (D_801BB1FC == 0) { + if (SsGetMute() == 0) { + D_801BB1F8 += 1; + } + } else { + D_801BB1FC -= 1; + } + break; + case 8: + D_801BB200 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801BB1F8; + +void func_80158BB0(void *arg0) { + if (D_801BB1F8 == 0) { + D_801BB1F8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801BB204; +extern s32 D_801856BC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801BB204; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801856BC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801BB208; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801BB208 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801BB1F8; +extern s32 D_801BB200; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801BB1F8 == 4) { + D_801BB1F8 = 5; + } + if (D_801BB200 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80185724[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80185724; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_801588CC", func_801594E8); + + +extern void (*D_80185938[])(void); + +void func_80159698(void *a0) { + D_80185938[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80185758)); + func_80028620(1, &(*(u8 *)&D_80185758) + 0x10); + func_80028620(2, &(*(u8 *)&D_80185758) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801859DC[])(void); + +void func_80159968(void *a0) { + D_801859DC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80185B30[])(void); + +void func_80159B70(void *a0) { + D_80185B30[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018594C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018594C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC04_021/ov_SC04_021_jr_80154C24.c b/src/ov_SC04_021/ov_SC04_021_jr_80154C24.c index 79e0c2df7..7f7a25a22 100644 --- a/src/ov_SC04_021/ov_SC04_021_jr_80154C24.c +++ b/src/ov_SC04_021/ov_SC04_021_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80181614[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8018E850; - -void func_80158BB0(void *arg0) { - if (D_8018E850 == 0) { - D_8018E850 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8018E85C; -extern s32 D_801815E8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8018E85C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801815E8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8018E860; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8018E860 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8018E850; -extern s32 D_8018E858; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8018E850 == 4) { - D_8018E850 = 5; - } - if (D_8018E858 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80181650[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80181650; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_80154C24", func_801594E8); - - -extern void (*D_80181864[])(void); - -void func_80159698(void *a0) { - D_80181864[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80181684)); - func_80028620(1, &(*(u8 *)&D_80181684) + 0x10); - func_80028620(2, &(*(u8 *)&D_80181684) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80181908[])(void); - -void func_80159968(void *a0) { - D_80181908[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80181A5C[])(void); - -void func_80159B70(void *a0) { - D_80181A5C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80181878; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181878); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC04_021/ov_SC04_021_jr_801588CC.c b/src/ov_SC04_021/ov_SC04_021_jr_801588CC.c new file mode 100644 index 000000000..4439ca9ba --- /dev/null +++ b/src/ov_SC04_021/ov_SC04_021_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801817B0; +extern u8 D_80181720; +extern u8 D_801816FC; +extern u8 D_801816D8; +extern u8 D_8018178C; +extern u8 D_80181768; +extern u8 D_80181744; +extern u8 D_801816B4; +extern void func_80145934(void); +extern u8 D_80181840; +extern u8 D_8018181C; +extern u8 D_801817F8; +extern u8 D_801817D4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80180C38[]; +extern unsigned char D_80180C68[]; +extern unsigned char D_80180CB8[]; +extern unsigned char D_80180CE8[]; +extern unsigned char D_80180D18[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80180D68[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80180E30[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180EB8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180EC0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8018E810; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8018E814; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180EF0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80180F98[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180FBC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80180FAC; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80180FD0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80180FDC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80180FEC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80181004[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180FF4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80181018[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80181034[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181024; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80181048[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018105C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80181070; +extern void (*D_80181098[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181078; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801810A4[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801810E4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801810E8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801812DC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018154C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018155C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8018E848; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181584[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80181564; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80181574; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801815C4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801815CC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181598; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801815D8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801815A8; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8018E850; +extern s32 D_8018E85C; +extern s32 D_8018E860; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181614[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8018E850; +extern int D_8018E85C; +extern int D_8018E860; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80181618[])(void); + extern int D_8018E854; + extern int D_8018E858; + short sVar1; + + D_80181618[*(unsigned short *)(param_1 + 2)](); + switch (D_8018E850) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8018E858 = 0; + D_8018E854 = 0x46; + D_8018E850 += 1; + break; + case 2: + if (D_8018E854 == 0) { + if (SsGetMute() == 0) { + D_8018E850 += 1; + } + } else { + D_8018E854 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8018E850 += 1; + } + break; + case 4: + D_8018E85C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8018E854 = 0xd2; + } else { + D_8018E854 = 1; + } + break; + case 5: + D_8018E854 -= 1; + if (D_8018E854 == -1 || D_8018E860 != 0) { + D_8018E854 = 0; + D_8018E850 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8018E854 = 0x28; + D_8018E850 += 1; + break; + case 7: + if (D_8018E854 == 0) { + if (SsGetMute() == 0) { + D_8018E850 += 1; + } + } else { + D_8018E854 -= 1; + } + break; + case 8: + D_8018E858 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8018E850; + +void func_80158BB0(void *arg0) { + if (D_8018E850 == 0) { + D_8018E850 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8018E85C; +extern s32 D_801815E8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8018E85C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801815E8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8018E860; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8018E860 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8018E850; +extern s32 D_8018E858; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8018E850 == 4) { + D_8018E850 = 5; + } + if (D_8018E858 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80181650[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80181650; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_801588CC", func_801594E8); + + +extern void (*D_80181864[])(void); + +void func_80159698(void *a0) { + D_80181864[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80181684)); + func_80028620(1, &(*(u8 *)&D_80181684) + 0x10); + func_80028620(2, &(*(u8 *)&D_80181684) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80181908[])(void); + +void func_80159968(void *a0) { + D_80181908[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80181A5C[])(void); + +void func_80159B70(void *a0) { + D_80181A5C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80181878; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181878); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_000/ov_SC05_000_jr_80154C24.c b/src/ov_SC05_000/ov_SC05_000_jr_80154C24.c index 084d670fc..6da4cbb79 100644 --- a/src/ov_SC05_000/ov_SC05_000_jr_80154C24.c +++ b/src/ov_SC05_000/ov_SC05_000_jr_80154C24.c @@ -1574,342 +1574,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180628[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_80199980; - -void func_80158BB0(void *arg0) { - if (D_80199980 == 0) { - D_80199980 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019998C; -extern s32 D_801805FC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019998C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801805FC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80199990; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80199990 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_80199980; -extern s32 D_80199988; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_80199980 == 4) { - D_80199980 = 5; - } - if (D_80199988 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80180664[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80180664; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_80154C24", func_801594E8); - - -extern void (*D_80180878[])(void); - -void func_80159698(void *a0) { - D_80180878[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180698)); - func_80028620(1, &(*(u8 *)&D_80180698) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180698) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018091C[])(void); - -void func_80159968(void *a0) { - D_8018091C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80180A70[])(void); - -void func_80159B70(void *a0) { - D_80180A70[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018088C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018088C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_000/ov_SC05_000_jr_801588CC.c b/src/ov_SC05_000/ov_SC05_000_jr_801588CC.c new file mode 100644 index 000000000..6e6e39d37 --- /dev/null +++ b/src/ov_SC05_000/ov_SC05_000_jr_801588CC.c @@ -0,0 +1,1513 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801807C4; +extern u8 D_80180734; +extern u8 D_80180710; +extern u8 D_801806EC; +extern u8 D_801807A0; +extern u8 D_8018077C; +extern u8 D_80180758; +extern u8 D_801806C8; +extern void func_80145934(void); +extern u8 D_80180854; +extern u8 D_80180830; +extern u8 D_8018080C; +extern u8 D_801807E8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8017FC4C[]; +extern unsigned char D_8017FC7C[]; +extern unsigned char D_8017FCCC[]; +extern unsigned char D_8017FCFC[]; +extern unsigned char D_8017FD2C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8017FD7C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8017FE44[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8017FECC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8017FED4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_80199940; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_80199944; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8017FF04; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8017FFAC[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8017FFD0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8017FFC0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8017FFE4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8017FFF0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80180018[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180008; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018002C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80180048[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180038; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018005C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80180070[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80180084; +extern void (*D_801800AC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018008C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801800B8[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801800F8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801800FC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801802F0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80180560[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80180570[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_80199978; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180598[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180578; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180588; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801805D8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801805E0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801805AC; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801805EC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801805BC; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_80199980; +extern s32 D_8019998C; +extern s32 D_80199990; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180628[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_80199980; +extern int D_8019998C; +extern int D_80199990; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018062C[])(void); + extern int D_80199984; + extern int D_80199988; + short sVar1; + + D_8018062C[*(unsigned short *)(param_1 + 2)](); + switch (D_80199980) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80199988 = 0; + D_80199984 = 0x46; + D_80199980 += 1; + break; + case 2: + if (D_80199984 == 0) { + if (SsGetMute() == 0) { + D_80199980 += 1; + } + } else { + D_80199984 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_80199980 += 1; + } + break; + case 4: + D_8019998C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_80199984 = 0xd2; + } else { + D_80199984 = 1; + } + break; + case 5: + D_80199984 -= 1; + if (D_80199984 == -1 || D_80199990 != 0) { + D_80199984 = 0; + D_80199980 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_80199984 = 0x28; + D_80199980 += 1; + break; + case 7: + if (D_80199984 == 0) { + if (SsGetMute() == 0) { + D_80199980 += 1; + } + } else { + D_80199984 -= 1; + } + break; + case 8: + D_80199988 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_80199980; + +void func_80158BB0(void *arg0) { + if (D_80199980 == 0) { + D_80199980 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019998C; +extern s32 D_801805FC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019998C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801805FC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80199990; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80199990 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_80199980; +extern s32 D_80199988; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_80199980 == 4) { + D_80199980 = 5; + } + if (D_80199988 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80180664[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80180664; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_801588CC", func_801594E8); + + +extern void (*D_80180878[])(void); + +void func_80159698(void *a0) { + D_80180878[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180698)); + func_80028620(1, &(*(u8 *)&D_80180698) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180698) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018091C[])(void); + +void func_80159968(void *a0) { + D_8018091C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80180A70[])(void); + +void func_80159B70(void *a0) { + D_80180A70[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018088C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018088C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_001/ov_SC05_001_jr_80154C24.c b/src/ov_SC05_001/ov_SC05_001_jr_80154C24.c index e4a7be8f9..d49eae59e 100644 --- a/src/ov_SC05_001/ov_SC05_001_jr_80154C24.c +++ b/src/ov_SC05_001/ov_SC05_001_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80187E04[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B4A40; - -void func_80158BB0(void *arg0) { - if (D_801B4A40 == 0) { - D_801B4A40 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B4A4C; -extern s32 D_80187DD8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B4A4C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187DD8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B4A50; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B4A50 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B4A40; -extern s32 D_801B4A48; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B4A40 == 4) { - D_801B4A40 = 5; - } - if (D_801B4A48 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80187E40[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80187E40; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_80154C24", func_801594E8); - - -extern void (*D_80188054[])(void); - -void func_80159698(void *a0) { - D_80188054[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80187E74)); - func_80028620(1, &(*(u8 *)&D_80187E74) + 0x10); - func_80028620(2, &(*(u8 *)&D_80187E74) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801880F8[])(void); - -void func_80159968(void *a0) { - D_801880F8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018824C[])(void); - -void func_80159B70(void *a0) { - D_8018824C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80188068; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188068); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_001/ov_SC05_001_jr_801588CC.c b/src/ov_SC05_001/ov_SC05_001_jr_801588CC.c new file mode 100644 index 000000000..2415d85a0 --- /dev/null +++ b/src/ov_SC05_001/ov_SC05_001_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80187FA0; +extern u8 D_80187F10; +extern u8 D_80187EEC; +extern u8 D_80187EC8; +extern u8 D_80187F7C; +extern u8 D_80187F58; +extern u8 D_80187F34; +extern u8 D_80187EA4; +extern void func_80145934(void); +extern u8 D_80188030; +extern u8 D_8018800C; +extern u8 D_80187FE8; +extern u8 D_80187FC4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80187428[]; +extern unsigned char D_80187458[]; +extern unsigned char D_801874A8[]; +extern unsigned char D_801874D8[]; +extern unsigned char D_80187508[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80187558[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80187620[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801876A8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801876B0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B4A00; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B4A04; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801876E0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80187788[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801877AC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018779C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801877C0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801877CC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801877DC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801877F4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801877E4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80187808[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80187824[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80187814; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80187838[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018784C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80187860; +extern void (*D_80187888[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187868; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80187894[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801878D4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801878D8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80187ACC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80187D3C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80187D4C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B4A38; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80187D74[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80187D54; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80187D64; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80187DB4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80187DBC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80187D88; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80187DC8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80187D98; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B4A40; +extern s32 D_801B4A4C; +extern s32 D_801B4A50; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187E04[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B4A40; +extern int D_801B4A4C; +extern int D_801B4A50; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80187E08[])(void); + extern int D_801B4A44; + extern int D_801B4A48; + short sVar1; + + D_80187E08[*(unsigned short *)(param_1 + 2)](); + switch (D_801B4A40) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B4A48 = 0; + D_801B4A44 = 0x46; + D_801B4A40 += 1; + break; + case 2: + if (D_801B4A44 == 0) { + if (SsGetMute() == 0) { + D_801B4A40 += 1; + } + } else { + D_801B4A44 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B4A40 += 1; + } + break; + case 4: + D_801B4A4C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B4A44 = 0xd2; + } else { + D_801B4A44 = 1; + } + break; + case 5: + D_801B4A44 -= 1; + if (D_801B4A44 == -1 || D_801B4A50 != 0) { + D_801B4A44 = 0; + D_801B4A40 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B4A44 = 0x28; + D_801B4A40 += 1; + break; + case 7: + if (D_801B4A44 == 0) { + if (SsGetMute() == 0) { + D_801B4A40 += 1; + } + } else { + D_801B4A44 -= 1; + } + break; + case 8: + D_801B4A48 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B4A40; + +void func_80158BB0(void *arg0) { + if (D_801B4A40 == 0) { + D_801B4A40 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B4A4C; +extern s32 D_80187DD8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B4A4C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187DD8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B4A50; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B4A50 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B4A40; +extern s32 D_801B4A48; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B4A40 == 4) { + D_801B4A40 = 5; + } + if (D_801B4A48 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80187E40[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80187E40; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_801588CC", func_801594E8); + + +extern void (*D_80188054[])(void); + +void func_80159698(void *a0) { + D_80188054[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80187E74)); + func_80028620(1, &(*(u8 *)&D_80187E74) + 0x10); + func_80028620(2, &(*(u8 *)&D_80187E74) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801880F8[])(void); + +void func_80159968(void *a0) { + D_801880F8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018824C[])(void); + +void func_80159B70(void *a0) { + D_8018824C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80188068; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188068); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_002/ov_SC05_002_jr_80154C24.c b/src/ov_SC05_002/ov_SC05_002_jr_80154C24.c index bad6442d2..40c7625d2 100644 --- a/src/ov_SC05_002/ov_SC05_002_jr_80154C24.c +++ b/src/ov_SC05_002/ov_SC05_002_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801825C4[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019ECE0; - -void func_80158BB0(void *arg0) { - if (D_8019ECE0 == 0) { - D_8019ECE0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019ECEC; -extern s32 D_80182598[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019ECEC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80182598[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019ECF0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019ECF0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019ECE0; -extern s32 D_8019ECE8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019ECE0 == 4) { - D_8019ECE0 = 5; - } - if (D_8019ECE8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80182600[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80182600; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_80154C24", func_801594E8); - - -extern void (*D_80182814[])(void); - -void func_80159698(void *a0) { - D_80182814[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80182634)); - func_80028620(1, &(*(u8 *)&D_80182634) + 0x10); - func_80028620(2, &(*(u8 *)&D_80182634) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801828B8[])(void); - -void func_80159968(void *a0) { - D_801828B8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80182A0C[])(void); - -void func_80159B70(void *a0) { - D_80182A0C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80182828; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80182828); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_002/ov_SC05_002_jr_801588CC.c b/src/ov_SC05_002/ov_SC05_002_jr_801588CC.c new file mode 100644 index 000000000..e54f8e6f0 --- /dev/null +++ b/src/ov_SC05_002/ov_SC05_002_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80182760; +extern u8 D_801826D0; +extern u8 D_801826AC; +extern u8 D_80182688; +extern u8 D_8018273C; +extern u8 D_80182718; +extern u8 D_801826F4; +extern u8 D_80182664; +extern void func_80145934(void); +extern u8 D_801827F0; +extern u8 D_801827CC; +extern u8 D_801827A8; +extern u8 D_80182784; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80181BE8[]; +extern unsigned char D_80181C18[]; +extern unsigned char D_80181C68[]; +extern unsigned char D_80181C98[]; +extern unsigned char D_80181CC8[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80181D18[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80181DE0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80181E68[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80181E70; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019ECA0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019ECA4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80181EA0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80181F48[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80181F6C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80181F5C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80181F80[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80181F8C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80181F9C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80181FB4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181FA4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80181FC8[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80181FE4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181FD4; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80181FF8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018200C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80182020; +extern void (*D_80182048[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80182028; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80182054[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80182094[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80182098[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018228C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801824FC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018250C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019ECD8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182534[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80182514; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80182524; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80182574[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018257C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182548; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80182588[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80182558; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019ECE0; +extern s32 D_8019ECEC; +extern s32 D_8019ECF0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801825C4[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019ECE0; +extern int D_8019ECEC; +extern int D_8019ECF0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801825C8[])(void); + extern int D_8019ECE4; + extern int D_8019ECE8; + short sVar1; + + D_801825C8[*(unsigned short *)(param_1 + 2)](); + switch (D_8019ECE0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019ECE8 = 0; + D_8019ECE4 = 0x46; + D_8019ECE0 += 1; + break; + case 2: + if (D_8019ECE4 == 0) { + if (SsGetMute() == 0) { + D_8019ECE0 += 1; + } + } else { + D_8019ECE4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019ECE0 += 1; + } + break; + case 4: + D_8019ECEC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019ECE4 = 0xd2; + } else { + D_8019ECE4 = 1; + } + break; + case 5: + D_8019ECE4 -= 1; + if (D_8019ECE4 == -1 || D_8019ECF0 != 0) { + D_8019ECE4 = 0; + D_8019ECE0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019ECE4 = 0x28; + D_8019ECE0 += 1; + break; + case 7: + if (D_8019ECE4 == 0) { + if (SsGetMute() == 0) { + D_8019ECE0 += 1; + } + } else { + D_8019ECE4 -= 1; + } + break; + case 8: + D_8019ECE8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019ECE0; + +void func_80158BB0(void *arg0) { + if (D_8019ECE0 == 0) { + D_8019ECE0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019ECEC; +extern s32 D_80182598[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019ECEC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80182598[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019ECF0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019ECF0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019ECE0; +extern s32 D_8019ECE8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019ECE0 == 4) { + D_8019ECE0 = 5; + } + if (D_8019ECE8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80182600[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80182600; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_801588CC", func_801594E8); + + +extern void (*D_80182814[])(void); + +void func_80159698(void *a0) { + D_80182814[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80182634)); + func_80028620(1, &(*(u8 *)&D_80182634) + 0x10); + func_80028620(2, &(*(u8 *)&D_80182634) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801828B8[])(void); + +void func_80159968(void *a0) { + D_801828B8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80182A0C[])(void); + +void func_80159B70(void *a0) { + D_80182A0C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80182828; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80182828); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_003/ov_SC05_003_jr_80154C24.c b/src/ov_SC05_003/ov_SC05_003_jr_80154C24.c index c81be82f2..58bee2747 100644 --- a/src/ov_SC05_003/ov_SC05_003_jr_80154C24.c +++ b/src/ov_SC05_003/ov_SC05_003_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801848FC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801AB7F0; - -void func_80158BB0(void *arg0) { - if (D_801AB7F0 == 0) { - D_801AB7F0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801AB7FC; -extern s32 D_801848D0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801AB7FC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801848D0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801AB800; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801AB800 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801AB7F0; -extern s32 D_801AB7F8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801AB7F0 == 4) { - D_801AB7F0 = 5; - } - if (D_801AB7F8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184938[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184938; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_80154C24", func_801594E8); - - -extern void (*D_80184B4C[])(void); - -void func_80159698(void *a0) { - D_80184B4C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018496C)); - func_80028620(1, &(*(u8 *)&D_8018496C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018496C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80184BF0[])(void); - -void func_80159968(void *a0) { - D_80184BF0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80184D44[])(void); - -void func_80159B70(void *a0) { - D_80184D44[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80184B60; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184B60); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_003/ov_SC05_003_jr_801588CC.c b/src/ov_SC05_003/ov_SC05_003_jr_801588CC.c new file mode 100644 index 000000000..765486643 --- /dev/null +++ b/src/ov_SC05_003/ov_SC05_003_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80184A98; +extern u8 D_80184A08; +extern u8 D_801849E4; +extern u8 D_801849C0; +extern u8 D_80184A74; +extern u8 D_80184A50; +extern u8 D_80184A2C; +extern u8 D_8018499C; +extern void func_80145934(void); +extern u8 D_80184B28; +extern u8 D_80184B04; +extern u8 D_80184AE0; +extern u8 D_80184ABC; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80183F20[]; +extern unsigned char D_80183F50[]; +extern unsigned char D_80183FA0[]; +extern unsigned char D_80183FD0[]; +extern unsigned char D_80184000[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80184050[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80184118[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801841A0[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801841A8; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801AB7B0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801AB7B4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801841D8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80184280[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801842A4[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80184294; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801842B8[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801842C4[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801842D4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801842EC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801842DC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80184300[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018431C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018430C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80184330[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80184344[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80184358; +extern void (*D_80184380[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80184360; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018438C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801843CC[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801843D0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801845C4[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184834[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184844[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801AB7E8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018486C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018484C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018485C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801848AC[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801848B4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184880; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801848C0[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80184890; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801AB7F0; +extern s32 D_801AB7FC; +extern s32 D_801AB800; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801848FC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801AB7F0; +extern int D_801AB7FC; +extern int D_801AB800; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80184900[])(void); + extern int D_801AB7F4; + extern int D_801AB7F8; + short sVar1; + + D_80184900[*(unsigned short *)(param_1 + 2)](); + switch (D_801AB7F0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801AB7F8 = 0; + D_801AB7F4 = 0x46; + D_801AB7F0 += 1; + break; + case 2: + if (D_801AB7F4 == 0) { + if (SsGetMute() == 0) { + D_801AB7F0 += 1; + } + } else { + D_801AB7F4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801AB7F0 += 1; + } + break; + case 4: + D_801AB7FC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801AB7F4 = 0xd2; + } else { + D_801AB7F4 = 1; + } + break; + case 5: + D_801AB7F4 -= 1; + if (D_801AB7F4 == -1 || D_801AB800 != 0) { + D_801AB7F4 = 0; + D_801AB7F0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801AB7F4 = 0x28; + D_801AB7F0 += 1; + break; + case 7: + if (D_801AB7F4 == 0) { + if (SsGetMute() == 0) { + D_801AB7F0 += 1; + } + } else { + D_801AB7F4 -= 1; + } + break; + case 8: + D_801AB7F8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801AB7F0; + +void func_80158BB0(void *arg0) { + if (D_801AB7F0 == 0) { + D_801AB7F0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801AB7FC; +extern s32 D_801848D0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801AB7FC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801848D0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801AB800; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801AB800 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801AB7F0; +extern s32 D_801AB7F8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801AB7F0 == 4) { + D_801AB7F0 = 5; + } + if (D_801AB7F8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184938[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184938; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_801588CC", func_801594E8); + + +extern void (*D_80184B4C[])(void); + +void func_80159698(void *a0) { + D_80184B4C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018496C)); + func_80028620(1, &(*(u8 *)&D_8018496C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018496C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80184BF0[])(void); + +void func_80159968(void *a0) { + D_80184BF0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80184D44[])(void); + +void func_80159B70(void *a0) { + D_80184D44[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80184B60; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184B60); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_004/ov_SC05_004_jr_80154C24.c b/src/ov_SC05_004/ov_SC05_004_jr_80154C24.c index 0c7d06bf6..4df258a33 100644 --- a/src/ov_SC05_004/ov_SC05_004_jr_80154C24.c +++ b/src/ov_SC05_004/ov_SC05_004_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80183A08[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019DE68; - -void func_80158BB0(void *arg0) { - if (D_8019DE68 == 0) { - D_8019DE68 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019DE74; -extern s32 D_801839DC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019DE74; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801839DC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019DE78; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019DE78 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019DE68; -extern s32 D_8019DE70; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019DE68 == 4) { - D_8019DE68 = 5; - } - if (D_8019DE70 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80183A44[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80183A44; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_80154C24", func_801594E8); - - -extern void (*D_80183C58[])(void); - -void func_80159698(void *a0) { - D_80183C58[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80183A78)); - func_80028620(1, &(*(u8 *)&D_80183A78) + 0x10); - func_80028620(2, &(*(u8 *)&D_80183A78) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80183CFC[])(void); - -void func_80159968(void *a0) { - D_80183CFC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80183E50[])(void); - -void func_80159B70(void *a0) { - D_80183E50[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80183C6C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80183C6C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_004/ov_SC05_004_jr_801588CC.c b/src/ov_SC05_004/ov_SC05_004_jr_801588CC.c new file mode 100644 index 000000000..f932ae280 --- /dev/null +++ b/src/ov_SC05_004/ov_SC05_004_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80183BA4; +extern u8 D_80183B14; +extern u8 D_80183AF0; +extern u8 D_80183ACC; +extern u8 D_80183B80; +extern u8 D_80183B5C; +extern u8 D_80183B38; +extern u8 D_80183AA8; +extern void func_80145934(void); +extern u8 D_80183C34; +extern u8 D_80183C10; +extern u8 D_80183BEC; +extern u8 D_80183BC8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018302C[]; +extern unsigned char D_8018305C[]; +extern unsigned char D_801830AC[]; +extern unsigned char D_801830DC[]; +extern unsigned char D_8018310C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018315C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80183224[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801832AC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801832B4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019DE28; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019DE2C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801832E4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018338C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801833B0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801833A0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801833C4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801833D0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801833E0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801833F8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801833E8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018340C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80183428[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183418; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018343C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80183450[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80183464; +extern void (*D_8018348C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018346C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80183498[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801834D8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801834DC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801836D0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80183940[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80183950[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019DE60; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80183978[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80183958; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80183968; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801839B8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801839C0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018398C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801839CC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018399C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019DE68; +extern s32 D_8019DE74; +extern s32 D_8019DE78; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80183A08[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019DE68; +extern int D_8019DE74; +extern int D_8019DE78; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80183A0C[])(void); + extern int D_8019DE6C; + extern int D_8019DE70; + short sVar1; + + D_80183A0C[*(unsigned short *)(param_1 + 2)](); + switch (D_8019DE68) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019DE70 = 0; + D_8019DE6C = 0x46; + D_8019DE68 += 1; + break; + case 2: + if (D_8019DE6C == 0) { + if (SsGetMute() == 0) { + D_8019DE68 += 1; + } + } else { + D_8019DE6C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019DE68 += 1; + } + break; + case 4: + D_8019DE74 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019DE6C = 0xd2; + } else { + D_8019DE6C = 1; + } + break; + case 5: + D_8019DE6C -= 1; + if (D_8019DE6C == -1 || D_8019DE78 != 0) { + D_8019DE6C = 0; + D_8019DE68 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019DE6C = 0x28; + D_8019DE68 += 1; + break; + case 7: + if (D_8019DE6C == 0) { + if (SsGetMute() == 0) { + D_8019DE68 += 1; + } + } else { + D_8019DE6C -= 1; + } + break; + case 8: + D_8019DE70 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019DE68; + +void func_80158BB0(void *arg0) { + if (D_8019DE68 == 0) { + D_8019DE68 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019DE74; +extern s32 D_801839DC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019DE74; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801839DC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019DE78; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019DE78 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019DE68; +extern s32 D_8019DE70; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019DE68 == 4) { + D_8019DE68 = 5; + } + if (D_8019DE70 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80183A44[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80183A44; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_801588CC", func_801594E8); + + +extern void (*D_80183C58[])(void); + +void func_80159698(void *a0) { + D_80183C58[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80183A78)); + func_80028620(1, &(*(u8 *)&D_80183A78) + 0x10); + func_80028620(2, &(*(u8 *)&D_80183A78) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80183CFC[])(void); + +void func_80159968(void *a0) { + D_80183CFC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80183E50[])(void); + +void func_80159B70(void *a0) { + D_80183E50[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80183C6C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80183C6C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_005/ov_SC05_005_jr_80154C24.c b/src/ov_SC05_005/ov_SC05_005_jr_80154C24.c index 62238cdd7..79951b510 100644 --- a/src/ov_SC05_005/ov_SC05_005_jr_80154C24.c +++ b/src/ov_SC05_005/ov_SC05_005_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801847DC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B0AD0; - -void func_80158BB0(void *arg0) { - if (D_801B0AD0 == 0) { - D_801B0AD0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B0ADC; -extern s32 D_801847B0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B0ADC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801847B0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B0AE0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B0AE0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B0AD0; -extern s32 D_801B0AD8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B0AD0 == 4) { - D_801B0AD0 = 5; - } - if (D_801B0AD8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184818[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184818; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_80154C24", func_801594E8); - - -extern void (*D_80184A2C[])(void); - -void func_80159698(void *a0) { - D_80184A2C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018484C)); - func_80028620(1, &(*(u8 *)&D_8018484C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018484C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80184AD0[])(void); - -void func_80159968(void *a0) { - D_80184AD0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80184C24[])(void); - -void func_80159B70(void *a0) { - D_80184C24[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80184A40; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184A40); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_005/ov_SC05_005_jr_801588CC.c b/src/ov_SC05_005/ov_SC05_005_jr_801588CC.c new file mode 100644 index 000000000..be7db838a --- /dev/null +++ b/src/ov_SC05_005/ov_SC05_005_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80184978; +extern u8 D_801848E8; +extern u8 D_801848C4; +extern u8 D_801848A0; +extern u8 D_80184954; +extern u8 D_80184930; +extern u8 D_8018490C; +extern u8 D_8018487C; +extern void func_80145934(void); +extern u8 D_80184A08; +extern u8 D_801849E4; +extern u8 D_801849C0; +extern u8 D_8018499C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80183E00[]; +extern unsigned char D_80183E30[]; +extern unsigned char D_80183E80[]; +extern unsigned char D_80183EB0[]; +extern unsigned char D_80183EE0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80183F30[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80183FF8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80184080[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80184088; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B0A90; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B0A94; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801840B8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80184160[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80184184[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80184174; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80184198[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801841A4[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801841B4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801841CC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801841BC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801841E0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801841FC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801841EC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80184210[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80184224[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80184238; +extern void (*D_80184260[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80184240; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018426C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801842AC[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801842B0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801844A4[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184714[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184724[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B0AC8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018474C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018472C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018473C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018478C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80184794[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184760; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801847A0[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80184770; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B0AD0; +extern s32 D_801B0ADC; +extern s32 D_801B0AE0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801847DC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B0AD0; +extern int D_801B0ADC; +extern int D_801B0AE0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801847E0[])(void); + extern int D_801B0AD4; + extern int D_801B0AD8; + short sVar1; + + D_801847E0[*(unsigned short *)(param_1 + 2)](); + switch (D_801B0AD0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B0AD8 = 0; + D_801B0AD4 = 0x46; + D_801B0AD0 += 1; + break; + case 2: + if (D_801B0AD4 == 0) { + if (SsGetMute() == 0) { + D_801B0AD0 += 1; + } + } else { + D_801B0AD4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B0AD0 += 1; + } + break; + case 4: + D_801B0ADC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B0AD4 = 0xd2; + } else { + D_801B0AD4 = 1; + } + break; + case 5: + D_801B0AD4 -= 1; + if (D_801B0AD4 == -1 || D_801B0AE0 != 0) { + D_801B0AD4 = 0; + D_801B0AD0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B0AD4 = 0x28; + D_801B0AD0 += 1; + break; + case 7: + if (D_801B0AD4 == 0) { + if (SsGetMute() == 0) { + D_801B0AD0 += 1; + } + } else { + D_801B0AD4 -= 1; + } + break; + case 8: + D_801B0AD8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B0AD0; + +void func_80158BB0(void *arg0) { + if (D_801B0AD0 == 0) { + D_801B0AD0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B0ADC; +extern s32 D_801847B0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B0ADC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801847B0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B0AE0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B0AE0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B0AD0; +extern s32 D_801B0AD8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B0AD0 == 4) { + D_801B0AD0 = 5; + } + if (D_801B0AD8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184818[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184818; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_801588CC", func_801594E8); + + +extern void (*D_80184A2C[])(void); + +void func_80159698(void *a0) { + D_80184A2C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018484C)); + func_80028620(1, &(*(u8 *)&D_8018484C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018484C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80184AD0[])(void); + +void func_80159968(void *a0) { + D_80184AD0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80184C24[])(void); + +void func_80159B70(void *a0) { + D_80184C24[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80184A40; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184A40); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_006/ov_SC05_006_jr_80154C24.c b/src/ov_SC05_006/ov_SC05_006_jr_80154C24.c index 420e9dc8e..fb220c5db 100644 --- a/src/ov_SC05_006/ov_SC05_006_jr_80154C24.c +++ b/src/ov_SC05_006/ov_SC05_006_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801817FC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8018EC08; - -void func_80158BB0(void *arg0) { - if (D_8018EC08 == 0) { - D_8018EC08 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8018EC14; -extern s32 D_801817D0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8018EC14; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801817D0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8018EC18; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8018EC18 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8018EC08; -extern s32 D_8018EC10; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8018EC08 == 4) { - D_8018EC08 = 5; - } - if (D_8018EC10 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80181838[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80181838; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_80154C24", func_801594E8); - - -extern void (*D_80181A4C[])(void); - -void func_80159698(void *a0) { - D_80181A4C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018186C)); - func_80028620(1, &(*(u8 *)&D_8018186C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018186C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80181AF0[])(void); - -void func_80159968(void *a0) { - D_80181AF0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80181C44[])(void); - -void func_80159B70(void *a0) { - D_80181C44[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80181A60; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181A60); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_006/ov_SC05_006_jr_801588CC.c b/src/ov_SC05_006/ov_SC05_006_jr_801588CC.c new file mode 100644 index 000000000..943976bca --- /dev/null +++ b/src/ov_SC05_006/ov_SC05_006_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80181998; +extern u8 D_80181908; +extern u8 D_801818E4; +extern u8 D_801818C0; +extern u8 D_80181974; +extern u8 D_80181950; +extern u8 D_8018192C; +extern u8 D_8018189C; +extern void func_80145934(void); +extern u8 D_80181A28; +extern u8 D_80181A04; +extern u8 D_801819E0; +extern u8 D_801819BC; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80180E20[]; +extern unsigned char D_80180E50[]; +extern unsigned char D_80180EA0[]; +extern unsigned char D_80180ED0[]; +extern unsigned char D_80180F00[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80180F50[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80181018[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801810A0[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801810A8; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8018EBC8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8018EBCC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801810D8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80181180[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801811A4[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80181194; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801811B8[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801811C4[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801811D4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801811EC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801811DC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80181200[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018121C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018120C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80181230[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80181244[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80181258; +extern void (*D_80181280[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181260; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018128C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801812CC[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801812D0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801814C4[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80181734[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80181744[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8018EC00; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018176C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018174C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018175C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801817AC[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801817B4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181780; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801817C0[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80181790; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8018EC08; +extern s32 D_8018EC14; +extern s32 D_8018EC18; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801817FC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8018EC08; +extern int D_8018EC14; +extern int D_8018EC18; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80181800[])(void); + extern int D_8018EC0C; + extern int D_8018EC10; + short sVar1; + + D_80181800[*(unsigned short *)(param_1 + 2)](); + switch (D_8018EC08) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8018EC10 = 0; + D_8018EC0C = 0x46; + D_8018EC08 += 1; + break; + case 2: + if (D_8018EC0C == 0) { + if (SsGetMute() == 0) { + D_8018EC08 += 1; + } + } else { + D_8018EC0C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8018EC08 += 1; + } + break; + case 4: + D_8018EC14 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8018EC0C = 0xd2; + } else { + D_8018EC0C = 1; + } + break; + case 5: + D_8018EC0C -= 1; + if (D_8018EC0C == -1 || D_8018EC18 != 0) { + D_8018EC0C = 0; + D_8018EC08 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8018EC0C = 0x28; + D_8018EC08 += 1; + break; + case 7: + if (D_8018EC0C == 0) { + if (SsGetMute() == 0) { + D_8018EC08 += 1; + } + } else { + D_8018EC0C -= 1; + } + break; + case 8: + D_8018EC10 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8018EC08; + +void func_80158BB0(void *arg0) { + if (D_8018EC08 == 0) { + D_8018EC08 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8018EC14; +extern s32 D_801817D0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8018EC14; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801817D0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8018EC18; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8018EC18 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8018EC08; +extern s32 D_8018EC10; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8018EC08 == 4) { + D_8018EC08 = 5; + } + if (D_8018EC10 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80181838[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80181838; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_801588CC", func_801594E8); + + +extern void (*D_80181A4C[])(void); + +void func_80159698(void *a0) { + D_80181A4C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018186C)); + func_80028620(1, &(*(u8 *)&D_8018186C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018186C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80181AF0[])(void); + +void func_80159968(void *a0) { + D_80181AF0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80181C44[])(void); + +void func_80159B70(void *a0) { + D_80181C44[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80181A60; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181A60); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_007/ov_SC05_007_jr_80154C24.c b/src/ov_SC05_007/ov_SC05_007_jr_80154C24.c index 050ab99ea..25c7b9c26 100644 --- a/src/ov_SC05_007/ov_SC05_007_jr_80154C24.c +++ b/src/ov_SC05_007/ov_SC05_007_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80182DF8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019BBE8; - -void func_80158BB0(void *arg0) { - if (D_8019BBE8 == 0) { - D_8019BBE8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019BBF4; -extern s32 D_80182DCC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019BBF4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80182DCC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019BBF8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019BBF8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019BBE8; -extern s32 D_8019BBF0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019BBE8 == 4) { - D_8019BBE8 = 5; - } - if (D_8019BBF0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80182E34[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80182E34; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_80154C24", func_801594E8); - - -extern void (*D_80183048[])(void); - -void func_80159698(void *a0) { - D_80183048[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80182E68)); - func_80028620(1, &(*(u8 *)&D_80182E68) + 0x10); - func_80028620(2, &(*(u8 *)&D_80182E68) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801830EC[])(void); - -void func_80159968(void *a0) { - D_801830EC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80183240[])(void); - -void func_80159B70(void *a0) { - D_80183240[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018305C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018305C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_007/ov_SC05_007_jr_801588CC.c b/src/ov_SC05_007/ov_SC05_007_jr_801588CC.c new file mode 100644 index 000000000..26003daa9 --- /dev/null +++ b/src/ov_SC05_007/ov_SC05_007_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80182F94; +extern u8 D_80182F04; +extern u8 D_80182EE0; +extern u8 D_80182EBC; +extern u8 D_80182F70; +extern u8 D_80182F4C; +extern u8 D_80182F28; +extern u8 D_80182E98; +extern void func_80145934(void); +extern u8 D_80183024; +extern u8 D_80183000; +extern u8 D_80182FDC; +extern u8 D_80182FB8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018241C[]; +extern unsigned char D_8018244C[]; +extern unsigned char D_8018249C[]; +extern unsigned char D_801824CC[]; +extern unsigned char D_801824FC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018254C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80182614[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018269C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801826A4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019BBA8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019BBAC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801826D4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018277C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801827A0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80182790; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801827B4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801827C0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801827D0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801827E8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801827D8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801827FC[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80182818[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80182808; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018282C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80182840[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80182854; +extern void (*D_8018287C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018285C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80182888[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801828C8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801828CC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80182AC0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80182D30[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80182D40[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019BBE0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182D68[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80182D48; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80182D58; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80182DA8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80182DB0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182D7C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80182DBC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80182D8C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019BBE8; +extern s32 D_8019BBF4; +extern s32 D_8019BBF8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80182DF8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019BBE8; +extern int D_8019BBF4; +extern int D_8019BBF8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80182DFC[])(void); + extern int D_8019BBEC; + extern int D_8019BBF0; + short sVar1; + + D_80182DFC[*(unsigned short *)(param_1 + 2)](); + switch (D_8019BBE8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019BBF0 = 0; + D_8019BBEC = 0x46; + D_8019BBE8 += 1; + break; + case 2: + if (D_8019BBEC == 0) { + if (SsGetMute() == 0) { + D_8019BBE8 += 1; + } + } else { + D_8019BBEC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019BBE8 += 1; + } + break; + case 4: + D_8019BBF4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019BBEC = 0xd2; + } else { + D_8019BBEC = 1; + } + break; + case 5: + D_8019BBEC -= 1; + if (D_8019BBEC == -1 || D_8019BBF8 != 0) { + D_8019BBEC = 0; + D_8019BBE8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019BBEC = 0x28; + D_8019BBE8 += 1; + break; + case 7: + if (D_8019BBEC == 0) { + if (SsGetMute() == 0) { + D_8019BBE8 += 1; + } + } else { + D_8019BBEC -= 1; + } + break; + case 8: + D_8019BBF0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019BBE8; + +void func_80158BB0(void *arg0) { + if (D_8019BBE8 == 0) { + D_8019BBE8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019BBF4; +extern s32 D_80182DCC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019BBF4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80182DCC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019BBF8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019BBF8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019BBE8; +extern s32 D_8019BBF0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019BBE8 == 4) { + D_8019BBE8 = 5; + } + if (D_8019BBF0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80182E34[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80182E34; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_801588CC", func_801594E8); + + +extern void (*D_80183048[])(void); + +void func_80159698(void *a0) { + D_80183048[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80182E68)); + func_80028620(1, &(*(u8 *)&D_80182E68) + 0x10); + func_80028620(2, &(*(u8 *)&D_80182E68) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801830EC[])(void); + +void func_80159968(void *a0) { + D_801830EC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80183240[])(void); + +void func_80159B70(void *a0) { + D_80183240[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018305C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018305C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_008/ov_SC05_008_jr_80154C24.c b/src/ov_SC05_008/ov_SC05_008_jr_80154C24.c index 26b582e76..35435edeb 100644 --- a/src/ov_SC05_008/ov_SC05_008_jr_80154C24.c +++ b/src/ov_SC05_008/ov_SC05_008_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80184D50[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019FF18; - -void func_80158BB0(void *arg0) { - if (D_8019FF18 == 0) { - D_8019FF18 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019FF24; -extern s32 D_80184D24[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019FF24; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80184D24[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019FF28; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019FF28 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019FF18; -extern s32 D_8019FF20; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019FF18 == 4) { - D_8019FF18 = 5; - } - if (D_8019FF20 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184D8C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184D8C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_80154C24", func_801594E8); - - -extern void (*D_80184FA0[])(void); - -void func_80159698(void *a0) { - D_80184FA0[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80184DC0)); - func_80028620(1, &(*(u8 *)&D_80184DC0) + 0x10); - func_80028620(2, &(*(u8 *)&D_80184DC0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80185044[])(void); - -void func_80159968(void *a0) { - D_80185044[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80185198[])(void); - -void func_80159B70(void *a0) { - D_80185198[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80184FB4; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184FB4); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_008/ov_SC05_008_jr_801588CC.c b/src/ov_SC05_008/ov_SC05_008_jr_801588CC.c new file mode 100644 index 000000000..12e531a8e --- /dev/null +++ b/src/ov_SC05_008/ov_SC05_008_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80184EEC; +extern u8 D_80184E5C; +extern u8 D_80184E38; +extern u8 D_80184E14; +extern u8 D_80184EC8; +extern u8 D_80184EA4; +extern u8 D_80184E80; +extern u8 D_80184DF0; +extern void func_80145934(void); +extern u8 D_80184F7C; +extern u8 D_80184F58; +extern u8 D_80184F34; +extern u8 D_80184F10; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80184374[]; +extern unsigned char D_801843A4[]; +extern unsigned char D_801843F4[]; +extern unsigned char D_80184424[]; +extern unsigned char D_80184454[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801844A4[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018456C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801845F4[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801845FC; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019FED8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019FEDC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018462C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801846D4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801846F8[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801846E8; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018470C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80184718[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80184728[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80184740[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80184730; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80184754[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80184770[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80184760; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80184784[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80184798[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801847AC; +extern void (*D_801847D4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801847B4; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801847E0[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80184820[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80184824[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80184A18[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184C88[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184C98[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019FF10; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184CC0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80184CA0; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80184CB0; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80184D00[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80184D08[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184CD4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80184D14[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80184CE4; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019FF18; +extern s32 D_8019FF24; +extern s32 D_8019FF28; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184D50[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019FF18; +extern int D_8019FF24; +extern int D_8019FF28; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80184D54[])(void); + extern int D_8019FF1C; + extern int D_8019FF20; + short sVar1; + + D_80184D54[*(unsigned short *)(param_1 + 2)](); + switch (D_8019FF18) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019FF20 = 0; + D_8019FF1C = 0x46; + D_8019FF18 += 1; + break; + case 2: + if (D_8019FF1C == 0) { + if (SsGetMute() == 0) { + D_8019FF18 += 1; + } + } else { + D_8019FF1C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019FF18 += 1; + } + break; + case 4: + D_8019FF24 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019FF1C = 0xd2; + } else { + D_8019FF1C = 1; + } + break; + case 5: + D_8019FF1C -= 1; + if (D_8019FF1C == -1 || D_8019FF28 != 0) { + D_8019FF1C = 0; + D_8019FF18 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019FF1C = 0x28; + D_8019FF18 += 1; + break; + case 7: + if (D_8019FF1C == 0) { + if (SsGetMute() == 0) { + D_8019FF18 += 1; + } + } else { + D_8019FF1C -= 1; + } + break; + case 8: + D_8019FF20 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019FF18; + +void func_80158BB0(void *arg0) { + if (D_8019FF18 == 0) { + D_8019FF18 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019FF24; +extern s32 D_80184D24[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019FF24; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80184D24[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019FF28; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019FF28 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019FF18; +extern s32 D_8019FF20; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019FF18 == 4) { + D_8019FF18 = 5; + } + if (D_8019FF20 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184D8C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184D8C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_801588CC", func_801594E8); + + +extern void (*D_80184FA0[])(void); + +void func_80159698(void *a0) { + D_80184FA0[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80184DC0)); + func_80028620(1, &(*(u8 *)&D_80184DC0) + 0x10); + func_80028620(2, &(*(u8 *)&D_80184DC0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80185044[])(void); + +void func_80159968(void *a0) { + D_80185044[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80185198[])(void); + +void func_80159B70(void *a0) { + D_80185198[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80184FB4; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184FB4); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_009/ov_SC05_009_jr_80154C24.c b/src/ov_SC05_009/ov_SC05_009_jr_80154C24.c index 1ee060ec1..cb180d828 100644 --- a/src/ov_SC05_009/ov_SC05_009_jr_80154C24.c +++ b/src/ov_SC05_009/ov_SC05_009_jr_80154C24.c @@ -1598,342 +1598,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180E60[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_80195928; - -void func_80158BB0(void *arg0) { - if (D_80195928 == 0) { - D_80195928 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_80195934; -extern s32 D_80180E34[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_80195934; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180E34[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80195938; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80195938 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_80195928; -extern s32 D_80195930; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_80195928 == 4) { - D_80195928 = 5; - } - if (D_80195930 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80180E9C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80180E9C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_80154C24", func_801594E8); - - -extern void (*D_801810B0[])(void); - -void func_80159698(void *a0) { - D_801810B0[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180ED0)); - func_80028620(1, &(*(u8 *)&D_80180ED0) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180ED0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80181154[])(void); - -void func_80159968(void *a0) { - D_80181154[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801812A8[])(void); - -void func_80159B70(void *a0) { - D_801812A8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801810C4; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801810C4); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_009/ov_SC05_009_jr_801588CC.c b/src/ov_SC05_009/ov_SC05_009_jr_801588CC.c new file mode 100644 index 000000000..56111fa3f --- /dev/null +++ b/src/ov_SC05_009/ov_SC05_009_jr_801588CC.c @@ -0,0 +1,1537 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80180FFC; +extern u8 D_80180F6C; +extern u8 D_80180F48; +extern u8 D_80180F24; +extern u8 D_80180FD8; +extern u8 D_80180FB4; +extern u8 D_80180F90; +extern u8 D_80180F00; +extern void func_80145934(void); +extern u8 D_8018108C; +extern u8 D_80181068; +extern u8 D_80181044; +extern u8 D_80181020; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80180484[]; +extern unsigned char D_801804B4[]; +extern unsigned char D_80180504[]; +extern unsigned char D_80180534[]; +extern unsigned char D_80180564[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801805B4[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80016714(void *a0, s32 a1); +extern void func_80146C3C(u8 *a0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern volatile s32 D_80127090; +extern volatile s32 D_80127094; +extern volatile s32 D_80127098; +extern void func_80147F78(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148D44(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_80149450(s32 a0, s16 *a1); +extern void func_801494CC(s32 a0, u16 *a1, u16 *a2); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern void func_8012EF70(s32, s32); +extern void func_801495C4(s32 a0, s32 a1); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014C088(s32 a0, s32 a1); +extern u8 func_80165658(s32 a0, s32 a1); +extern s32 func_801497A8(s32 *a0); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern s32 func_80144A04(s32 *a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern void func_8016EDEC(s32 a0, s32 a1); +extern void func_80149FA8(void); +extern s32 D_8018067C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern s32 func_8016F1C4(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_8014BD60(s32 a0, s32 a1); +extern void func_8014B084(void); +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180704[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern void func_8014C1C8(s32 a0, s32 a1, void* a2); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018070C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); /* canonical (engine_core.h:11555) */ +extern s32 func_8014E284(s32 a0, s16 *arg1, s16 *arg2); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801958E8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern s32 func_8014F4C0(s32 arg0); +extern int func_8014F6F4(void); +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801958EC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern S16 D_80194F84; +extern s32 D_8018073C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B28(int param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801807E4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180808[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801807F8; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018081C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80180828[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80180838[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80180850[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180840; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80180864[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void func_80152C80(s32* a0); +extern void (*D_80180880[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180870; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80180894[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801808A8[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801808BC; +extern void (*D_801808E4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801808C4; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801808F0[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80180930[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80180934[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80180B28[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80180D98[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80180DA8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_80195920; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180DD0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180DB0; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180DC0; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180E10[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80180E18[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180DE4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80180E24[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180DF4; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_80195928; +extern s32 D_80195934; +extern s32 D_80195938; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180E60[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_80195928; +extern int D_80195934; +extern int D_80195938; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80180E64[])(void); + extern int D_8019592C; + extern int D_80195930; + short sVar1; + + D_80180E64[*(unsigned short *)(param_1 + 2)](); + switch (D_80195928) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80195930 = 0; + D_8019592C = 0x46; + D_80195928 += 1; + break; + case 2: + if (D_8019592C == 0) { + if (SsGetMute() == 0) { + D_80195928 += 1; + } + } else { + D_8019592C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_80195928 += 1; + } + break; + case 4: + D_80195934 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019592C = 0xd2; + } else { + D_8019592C = 1; + } + break; + case 5: + D_8019592C -= 1; + if (D_8019592C == -1 || D_80195938 != 0) { + D_8019592C = 0; + D_80195928 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019592C = 0x28; + D_80195928 += 1; + break; + case 7: + if (D_8019592C == 0) { + if (SsGetMute() == 0) { + D_80195928 += 1; + } + } else { + D_8019592C -= 1; + } + break; + case 8: + D_80195930 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_80195928; + +void func_80158BB0(void *arg0) { + if (D_80195928 == 0) { + D_80195928 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_80195934; +extern s32 D_80180E34[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_80195934; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180E34[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80195938; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80195938 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_80195928; +extern s32 D_80195930; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_80195928 == 4) { + D_80195928 = 5; + } + if (D_80195930 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80180E9C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80180E9C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_801588CC", func_801594E8); + + +extern void (*D_801810B0[])(void); + +void func_80159698(void *a0) { + D_801810B0[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180ED0)); + func_80028620(1, &(*(u8 *)&D_80180ED0) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180ED0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80181154[])(void); + +void func_80159968(void *a0) { + D_80181154[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801812A8[])(void); + +void func_80159B70(void *a0) { + D_801812A8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801810C4; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801810C4); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_010/ov_SC05_010_jr_80154C24.c b/src/ov_SC05_010/ov_SC05_010_jr_80154C24.c index 6ee08a29b..f7d274237 100644 --- a/src/ov_SC05_010/ov_SC05_010_jr_80154C24.c +++ b/src/ov_SC05_010/ov_SC05_010_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018AD3C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801C5D78; - -void func_80158BB0(void *arg0) { - if (D_801C5D78 == 0) { - D_801C5D78 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801C5D84; -extern s32 D_8018AD10[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C5D84; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018AD10[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801C5D88; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C5D88 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801C5D78; -extern s32 D_801C5D80; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801C5D78 == 4) { - D_801C5D78 = 5; - } - if (D_801C5D80 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018AD78[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018AD78; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80154C24", func_801594E8); - - -extern void (*D_8018AF8C[])(void); - -void func_80159698(void *a0) { - D_8018AF8C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018ADAC)); - func_80028620(1, &(*(u8 *)&D_8018ADAC) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018ADAC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018B030[])(void); - -void func_80159968(void *a0) { - D_8018B030[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018B184[])(void); - -void func_80159B70(void *a0) { - D_8018B184[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018AFA0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018AFA0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_010/ov_SC05_010_jr_801588CC.c b/src/ov_SC05_010/ov_SC05_010_jr_801588CC.c new file mode 100644 index 000000000..c7e8c9eb4 --- /dev/null +++ b/src/ov_SC05_010/ov_SC05_010_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018AED8; +extern u8 D_8018AE48; +extern u8 D_8018AE24; +extern u8 D_8018AE00; +extern u8 D_8018AEB4; +extern u8 D_8018AE90; +extern u8 D_8018AE6C; +extern u8 D_8018ADDC; +extern void func_80145934(void); +extern u8 D_8018AF68; +extern u8 D_8018AF44; +extern u8 D_8018AF20; +extern u8 D_8018AEFC; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018A360[]; +extern unsigned char D_8018A390[]; +extern unsigned char D_8018A3E0[]; +extern unsigned char D_8018A410[]; +extern unsigned char D_8018A440[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018A490[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018A558[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018A5E0[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018A5E8; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801C5D38; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801C5D3C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018A618; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018A6C0[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018A6E4[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018A6D4; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018A6F8[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018A704[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018A714[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018A72C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018A71C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018A740[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018A75C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018A74C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018A770[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018A784[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018A798; +extern void (*D_8018A7C0[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018A7A0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018A7CC[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018A80C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018A810[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018AA04[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018AC74[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018AC84[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801C5D70; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018ACAC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018AC8C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018AC9C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018ACEC[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018ACF4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018ACC0; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018AD00[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018ACD0; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801C5D78; +extern s32 D_801C5D84; +extern s32 D_801C5D88; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018AD3C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801C5D78; +extern int D_801C5D84; +extern int D_801C5D88; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018AD40[])(void); + extern int D_801C5D7C; + extern int D_801C5D80; + short sVar1; + + D_8018AD40[*(unsigned short *)(param_1 + 2)](); + switch (D_801C5D78) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C5D80 = 0; + D_801C5D7C = 0x46; + D_801C5D78 += 1; + break; + case 2: + if (D_801C5D7C == 0) { + if (SsGetMute() == 0) { + D_801C5D78 += 1; + } + } else { + D_801C5D7C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C5D78 += 1; + } + break; + case 4: + D_801C5D84 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C5D7C = 0xd2; + } else { + D_801C5D7C = 1; + } + break; + case 5: + D_801C5D7C -= 1; + if (D_801C5D7C == -1 || D_801C5D88 != 0) { + D_801C5D7C = 0; + D_801C5D78 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C5D7C = 0x28; + D_801C5D78 += 1; + break; + case 7: + if (D_801C5D7C == 0) { + if (SsGetMute() == 0) { + D_801C5D78 += 1; + } + } else { + D_801C5D7C -= 1; + } + break; + case 8: + D_801C5D80 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801C5D78; + +void func_80158BB0(void *arg0) { + if (D_801C5D78 == 0) { + D_801C5D78 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801C5D84; +extern s32 D_8018AD10[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C5D84; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018AD10[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801C5D88; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C5D88 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801C5D78; +extern s32 D_801C5D80; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801C5D78 == 4) { + D_801C5D78 = 5; + } + if (D_801C5D80 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018AD78[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018AD78; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_801588CC", func_801594E8); + + +extern void (*D_8018AF8C[])(void); + +void func_80159698(void *a0) { + D_8018AF8C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018ADAC)); + func_80028620(1, &(*(u8 *)&D_8018ADAC) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018ADAC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018B030[])(void); + +void func_80159968(void *a0) { + D_8018B030[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018B184[])(void); + +void func_80159B70(void *a0) { + D_8018B184[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018AFA0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018AFA0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_011/ov_SC05_011_jr_80154C24.c b/src/ov_SC05_011/ov_SC05_011_jr_80154C24.c index 4a08197ed..e7f432677 100644 --- a/src/ov_SC05_011/ov_SC05_011_jr_80154C24.c +++ b/src/ov_SC05_011/ov_SC05_011_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801800B4[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019BF00; - -void func_80158BB0(void *arg0) { - if (D_8019BF00 == 0) { - D_8019BF00 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019BF0C; -extern s32 D_80180088[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019BF0C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180088[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019BF10; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019BF10 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019BF00; -extern s32 D_8019BF08; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019BF00 == 4) { - D_8019BF00 = 5; - } - if (D_8019BF08 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801800F0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801800F0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_80154C24", func_801594E8); - - -extern void (*D_80180304[])(void); - -void func_80159698(void *a0) { - D_80180304[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180124)); - func_80028620(1, &(*(u8 *)&D_80180124) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180124) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801803A8[])(void); - -void func_80159968(void *a0) { - D_801803A8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801804FC[])(void); - -void func_80159B70(void *a0) { - D_801804FC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80180318; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80180318); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_011/ov_SC05_011_jr_801588CC.c b/src/ov_SC05_011/ov_SC05_011_jr_801588CC.c new file mode 100644 index 000000000..a13951aaa --- /dev/null +++ b/src/ov_SC05_011/ov_SC05_011_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80180250; +extern u8 D_801801C0; +extern u8 D_8018019C; +extern u8 D_80180178; +extern u8 D_8018022C; +extern u8 D_80180208; +extern u8 D_801801E4; +extern u8 D_80180154; +extern void func_80145934(void); +extern u8 D_801802E0; +extern u8 D_801802BC; +extern u8 D_80180298; +extern u8 D_80180274; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8017F6D8[]; +extern unsigned char D_8017F708[]; +extern unsigned char D_8017F758[]; +extern unsigned char D_8017F788[]; +extern unsigned char D_8017F7B8[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8017F808[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8017F8D0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8017F958[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8017F960; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019BEC0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019BEC4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8017F990; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8017FA38[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8017FA5C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8017FA4C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8017FA70[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8017FA7C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8017FA8C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8017FAA4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FA94; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8017FAB8[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8017FAD4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FAC4; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8017FAE8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8017FAFC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8017FB10; +extern void (*D_8017FB38[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017FB18; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8017FB44[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8017FB84[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8017FB88[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8017FD7C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8017FFEC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8017FFFC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019BEF8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180024[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180004; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180014; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180064[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018006C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180038; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80180078[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180048; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019BF00; +extern s32 D_8019BF0C; +extern s32 D_8019BF10; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801800B4[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019BF00; +extern int D_8019BF0C; +extern int D_8019BF10; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801800B8[])(void); + extern int D_8019BF04; + extern int D_8019BF08; + short sVar1; + + D_801800B8[*(unsigned short *)(param_1 + 2)](); + switch (D_8019BF00) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019BF08 = 0; + D_8019BF04 = 0x46; + D_8019BF00 += 1; + break; + case 2: + if (D_8019BF04 == 0) { + if (SsGetMute() == 0) { + D_8019BF00 += 1; + } + } else { + D_8019BF04 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019BF00 += 1; + } + break; + case 4: + D_8019BF0C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019BF04 = 0xd2; + } else { + D_8019BF04 = 1; + } + break; + case 5: + D_8019BF04 -= 1; + if (D_8019BF04 == -1 || D_8019BF10 != 0) { + D_8019BF04 = 0; + D_8019BF00 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019BF04 = 0x28; + D_8019BF00 += 1; + break; + case 7: + if (D_8019BF04 == 0) { + if (SsGetMute() == 0) { + D_8019BF00 += 1; + } + } else { + D_8019BF04 -= 1; + } + break; + case 8: + D_8019BF08 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019BF00; + +void func_80158BB0(void *arg0) { + if (D_8019BF00 == 0) { + D_8019BF00 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019BF0C; +extern s32 D_80180088[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019BF0C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180088[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019BF10; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019BF10 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019BF00; +extern s32 D_8019BF08; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019BF00 == 4) { + D_8019BF00 = 5; + } + if (D_8019BF08 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801800F0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801800F0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_801588CC", func_801594E8); + + +extern void (*D_80180304[])(void); + +void func_80159698(void *a0) { + D_80180304[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180124)); + func_80028620(1, &(*(u8 *)&D_80180124) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180124) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801803A8[])(void); + +void func_80159968(void *a0) { + D_801803A8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801804FC[])(void); + +void func_80159B70(void *a0) { + D_801804FC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80180318; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80180318); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_017/ov_SC05_017_jr_80154C24.c b/src/ov_SC05_017/ov_SC05_017_jr_80154C24.c index 3127d766b..a0e8188a4 100644 --- a/src/ov_SC05_017/ov_SC05_017_jr_80154C24.c +++ b/src/ov_SC05_017/ov_SC05_017_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018F574[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801EBA40; - -void func_80158BB0(void *arg0) { - if (D_801EBA40 == 0) { - D_801EBA40 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801EBA4C; -extern s32 D_8018F548[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801EBA4C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018F548[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801EBA50; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801EBA50 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801EBA40; -extern s32 D_801EBA48; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801EBA40 == 4) { - D_801EBA40 = 5; - } - if (D_801EBA48 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018F5B0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018F5B0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80154C24", func_801594E8); - - -extern void (*D_8018F7C4[])(void); - -void func_80159698(void *a0) { - D_8018F7C4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018F5E4)); - func_80028620(1, &(*(u8 *)&D_8018F5E4) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018F5E4) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018F868[])(void); - -void func_80159968(void *a0) { - D_8018F868[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018F9BC[])(void); - -void func_80159B70(void *a0) { - D_8018F9BC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018F7D8; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018F7D8); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_017/ov_SC05_017_jr_801588CC.c b/src/ov_SC05_017/ov_SC05_017_jr_801588CC.c new file mode 100644 index 000000000..9ed5f28da --- /dev/null +++ b/src/ov_SC05_017/ov_SC05_017_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018F710; +extern u8 D_8018F680; +extern u8 D_8018F65C; +extern u8 D_8018F638; +extern u8 D_8018F6EC; +extern u8 D_8018F6C8; +extern u8 D_8018F6A4; +extern u8 D_8018F614; +extern void func_80145934(void); +extern u8 D_8018F7A0; +extern u8 D_8018F77C; +extern u8 D_8018F758; +extern u8 D_8018F734; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018EB98[]; +extern unsigned char D_8018EBC8[]; +extern unsigned char D_8018EC18[]; +extern unsigned char D_8018EC48[]; +extern unsigned char D_8018EC78[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018ECC8[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018ED90[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018EE18[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018EE20; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801EBA00; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801EBA04; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018EE50; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018EEF8[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018EF1C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018EF0C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018EF30[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018EF3C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018EF4C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018EF64[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018EF54; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018EF78[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018EF94[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018EF84; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018EFA8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018EFBC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018EFD0; +extern void (*D_8018EFF8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018EFD8; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018F004[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018F044[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018F048[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018F23C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018F4AC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018F4BC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801EBA38; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018F4E4[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018F4C4; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018F4D4; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018F524[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018F52C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018F4F8; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018F538[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018F508; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801EBA40; +extern s32 D_801EBA4C; +extern s32 D_801EBA50; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018F574[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801EBA40; +extern int D_801EBA4C; +extern int D_801EBA50; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018F578[])(void); + extern int D_801EBA44; + extern int D_801EBA48; + short sVar1; + + D_8018F578[*(unsigned short *)(param_1 + 2)](); + switch (D_801EBA40) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801EBA48 = 0; + D_801EBA44 = 0x46; + D_801EBA40 += 1; + break; + case 2: + if (D_801EBA44 == 0) { + if (SsGetMute() == 0) { + D_801EBA40 += 1; + } + } else { + D_801EBA44 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801EBA40 += 1; + } + break; + case 4: + D_801EBA4C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801EBA44 = 0xd2; + } else { + D_801EBA44 = 1; + } + break; + case 5: + D_801EBA44 -= 1; + if (D_801EBA44 == -1 || D_801EBA50 != 0) { + D_801EBA44 = 0; + D_801EBA40 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801EBA44 = 0x28; + D_801EBA40 += 1; + break; + case 7: + if (D_801EBA44 == 0) { + if (SsGetMute() == 0) { + D_801EBA40 += 1; + } + } else { + D_801EBA44 -= 1; + } + break; + case 8: + D_801EBA48 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801EBA40; + +void func_80158BB0(void *arg0) { + if (D_801EBA40 == 0) { + D_801EBA40 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801EBA4C; +extern s32 D_8018F548[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801EBA4C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018F548[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801EBA50; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801EBA50 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801EBA40; +extern s32 D_801EBA48; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801EBA40 == 4) { + D_801EBA40 = 5; + } + if (D_801EBA48 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018F5B0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018F5B0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_801588CC", func_801594E8); + + +extern void (*D_8018F7C4[])(void); + +void func_80159698(void *a0) { + D_8018F7C4[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018F5E4)); + func_80028620(1, &(*(u8 *)&D_8018F5E4) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018F5E4) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018F868[])(void); + +void func_80159968(void *a0) { + D_8018F868[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018F9BC[])(void); + +void func_80159B70(void *a0) { + D_8018F9BC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018F7D8; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018F7D8); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_018/ov_SC05_018_jr_80154C24.c b/src/ov_SC05_018/ov_SC05_018_jr_80154C24.c index b3643105d..4006ff337 100644 --- a/src/ov_SC05_018/ov_SC05_018_jr_80154C24.c +++ b/src/ov_SC05_018/ov_SC05_018_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80188CD0[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E5180; - -void func_80158BB0(void *arg0) { - if (D_801E5180 == 0) { - D_801E5180 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E518C; -extern s32 D_80188CA4[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E518C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188CA4[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E5190; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E5190 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5180; -extern s32 D_801E5188; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E5180 == 4) { - D_801E5180 = 5; - } - if (D_801E5188 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80188D0C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80188D0C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_80154C24", func_801594E8); - - -extern void (*D_80188F20[])(void); - -void func_80159698(void *a0) { - D_80188F20[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80188D40)); - func_80028620(1, &(*(u8 *)&D_80188D40) + 0x10); - func_80028620(2, &(*(u8 *)&D_80188D40) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80188FC4[])(void); - -void func_80159968(void *a0) { - D_80188FC4[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80189118[])(void); - -void func_80159B70(void *a0) { - D_80189118[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80188F34; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188F34); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_018/ov_SC05_018_jr_801588CC.c b/src/ov_SC05_018/ov_SC05_018_jr_801588CC.c new file mode 100644 index 000000000..9e018bfcb --- /dev/null +++ b/src/ov_SC05_018/ov_SC05_018_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80188E6C; +extern u8 D_80188DDC; +extern u8 D_80188DB8; +extern u8 D_80188D94; +extern u8 D_80188E48; +extern u8 D_80188E24; +extern u8 D_80188E00; +extern u8 D_80188D70; +extern void func_80145934(void); +extern u8 D_80188EFC; +extern u8 D_80188ED8; +extern u8 D_80188EB4; +extern u8 D_80188E90; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801882F4[]; +extern unsigned char D_80188324[]; +extern unsigned char D_80188374[]; +extern unsigned char D_801883A4[]; +extern unsigned char D_801883D4[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80188424[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801884EC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80188574[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018857C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E5140; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E5144; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801885AC; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80188654[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80188678[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80188668; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018868C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80188698[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801886A8[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801886C0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801886B0; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801886D4[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801886F0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801886E0; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80188704[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80188718[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018872C; +extern void (*D_80188754[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80188734; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80188760[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801887A0[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801887A4[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80188998[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80188C08[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80188C18[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E5178; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80188C40[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80188C20; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80188C30; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80188C80[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80188C88[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80188C54; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80188C94[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80188C64; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E5180; +extern s32 D_801E518C; +extern s32 D_801E5190; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188CD0[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801E5180; +extern int D_801E518C; +extern int D_801E5190; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80188CD4[])(void); + extern int D_801E5184; + extern int D_801E5188; + short sVar1; + + D_80188CD4[*(unsigned short *)(param_1 + 2)](); + switch (D_801E5180) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801E5188 = 0; + D_801E5184 = 0x46; + D_801E5180 += 1; + break; + case 2: + if (D_801E5184 == 0) { + if (SsGetMute() == 0) { + D_801E5180 += 1; + } + } else { + D_801E5184 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801E5180 += 1; + } + break; + case 4: + D_801E518C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801E5184 = 0xd2; + } else { + D_801E5184 = 1; + } + break; + case 5: + D_801E5184 -= 1; + if (D_801E5184 == -1 || D_801E5190 != 0) { + D_801E5184 = 0; + D_801E5180 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801E5184 = 0x28; + D_801E5180 += 1; + break; + case 7: + if (D_801E5184 == 0) { + if (SsGetMute() == 0) { + D_801E5180 += 1; + } + } else { + D_801E5184 -= 1; + } + break; + case 8: + D_801E5188 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801E5180; + +void func_80158BB0(void *arg0) { + if (D_801E5180 == 0) { + D_801E5180 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801E518C; +extern s32 D_80188CA4[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801E518C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188CA4[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801E5190; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801E5190 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801E5180; +extern s32 D_801E5188; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801E5180 == 4) { + D_801E5180 = 5; + } + if (D_801E5188 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80188D0C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80188D0C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_801588CC", func_801594E8); + + +extern void (*D_80188F20[])(void); + +void func_80159698(void *a0) { + D_80188F20[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80188D40)); + func_80028620(1, &(*(u8 *)&D_80188D40) + 0x10); + func_80028620(2, &(*(u8 *)&D_80188D40) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80188FC4[])(void); + +void func_80159968(void *a0) { + D_80188FC4[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80189118[])(void); + +void func_80159B70(void *a0) { + D_80189118[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80188F34; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188F34); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC05_019/ov_SC05_019_jr_80154C24.c b/src/ov_SC05_019/ov_SC05_019_jr_80154C24.c index b09d6bedc..30e9cfc87 100644 --- a/src/ov_SC05_019/ov_SC05_019_jr_80154C24.c +++ b/src/ov_SC05_019/ov_SC05_019_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80181614[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8018E850; - -void func_80158BB0(void *arg0) { - if (D_8018E850 == 0) { - D_8018E850 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8018E85C; -extern s32 D_801815E8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8018E85C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801815E8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8018E860; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8018E860 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8018E850; -extern s32 D_8018E858; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8018E850 == 4) { - D_8018E850 = 5; - } - if (D_8018E858 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80181650[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80181650; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_80154C24", func_801594E8); - - -extern void (*D_80181864[])(void); - -void func_80159698(void *a0) { - D_80181864[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80181684)); - func_80028620(1, &(*(u8 *)&D_80181684) + 0x10); - func_80028620(2, &(*(u8 *)&D_80181684) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80181908[])(void); - -void func_80159968(void *a0) { - D_80181908[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80181A5C[])(void); - -void func_80159B70(void *a0) { - D_80181A5C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80181878; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181878); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC05_019/ov_SC05_019_jr_801588CC.c b/src/ov_SC05_019/ov_SC05_019_jr_801588CC.c new file mode 100644 index 000000000..69fa131ac --- /dev/null +++ b/src/ov_SC05_019/ov_SC05_019_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801817B0; +extern u8 D_80181720; +extern u8 D_801816FC; +extern u8 D_801816D8; +extern u8 D_8018178C; +extern u8 D_80181768; +extern u8 D_80181744; +extern u8 D_801816B4; +extern void func_80145934(void); +extern u8 D_80181840; +extern u8 D_8018181C; +extern u8 D_801817F8; +extern u8 D_801817D4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80180C38[]; +extern unsigned char D_80180C68[]; +extern unsigned char D_80180CB8[]; +extern unsigned char D_80180CE8[]; +extern unsigned char D_80180D18[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80180D68[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80180E30[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80180EB8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180EC0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8018E810; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8018E814; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180EF0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80180F98[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180FBC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80180FAC; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80180FD0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80180FDC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80180FEC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80181004[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180FF4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80181018[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80181034[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181024; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80181048[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018105C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80181070; +extern void (*D_80181098[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181078; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801810A4[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801810E4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801810E8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801812DC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018154C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018155C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8018E848; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80181584[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80181564; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80181574; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801815C4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801815CC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80181598; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801815D8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801815A8; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8018E850; +extern s32 D_8018E85C; +extern s32 D_8018E860; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80181614[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8018E850; +extern int D_8018E85C; +extern int D_8018E860; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80181618[])(void); + extern int D_8018E854; + extern int D_8018E858; + short sVar1; + + D_80181618[*(unsigned short *)(param_1 + 2)](); + switch (D_8018E850) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8018E858 = 0; + D_8018E854 = 0x46; + D_8018E850 += 1; + break; + case 2: + if (D_8018E854 == 0) { + if (SsGetMute() == 0) { + D_8018E850 += 1; + } + } else { + D_8018E854 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8018E850 += 1; + } + break; + case 4: + D_8018E85C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8018E854 = 0xd2; + } else { + D_8018E854 = 1; + } + break; + case 5: + D_8018E854 -= 1; + if (D_8018E854 == -1 || D_8018E860 != 0) { + D_8018E854 = 0; + D_8018E850 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8018E854 = 0x28; + D_8018E850 += 1; + break; + case 7: + if (D_8018E854 == 0) { + if (SsGetMute() == 0) { + D_8018E850 += 1; + } + } else { + D_8018E854 -= 1; + } + break; + case 8: + D_8018E858 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8018E850; + +void func_80158BB0(void *arg0) { + if (D_8018E850 == 0) { + D_8018E850 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8018E85C; +extern s32 D_801815E8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8018E85C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801815E8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8018E860; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8018E860 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8018E850; +extern s32 D_8018E858; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8018E850 == 4) { + D_8018E850 = 5; + } + if (D_8018E858 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80181650[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80181650; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_801588CC", func_801594E8); + + +extern void (*D_80181864[])(void); + +void func_80159698(void *a0) { + D_80181864[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80181684)); + func_80028620(1, &(*(u8 *)&D_80181684) + 0x10); + func_80028620(2, &(*(u8 *)&D_80181684) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80181908[])(void); + +void func_80159968(void *a0) { + D_80181908[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80181A5C[])(void); + +void func_80159B70(void *a0) { + D_80181A5C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80181878; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181878); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_000/ov_SC06_000_jr_80154C24.c b/src/ov_SC06_000/ov_SC06_000_jr_80154C24.c index 7d913fd1a..8083b9879 100644 --- a/src/ov_SC06_000/ov_SC06_000_jr_80154C24.c +++ b/src/ov_SC06_000/ov_SC06_000_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018A624[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801AD4C0; - -void func_80158BB0(void *arg0) { - if (D_801AD4C0 == 0) { - D_801AD4C0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801AD4CC; -extern s32 D_8018A5F8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801AD4CC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018A5F8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801AD4D0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801AD4D0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801AD4C0; -extern s32 D_801AD4C8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801AD4C0 == 4) { - D_801AD4C0 = 5; - } - if (D_801AD4C8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018A660[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018A660; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_80154C24", func_801594E8); - - -extern void (*D_8018A874[])(void); - -void func_80159698(void *a0) { - D_8018A874[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018A694)); - func_80028620(1, &(*(u8 *)&D_8018A694) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018A694) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018A918[])(void); - -void func_80159968(void *a0) { - D_8018A918[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018AA6C[])(void); - -void func_80159B70(void *a0) { - D_8018AA6C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018A888; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018A888); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_000/ov_SC06_000_jr_801588CC.c b/src/ov_SC06_000/ov_SC06_000_jr_801588CC.c new file mode 100644 index 000000000..7801b55b5 --- /dev/null +++ b/src/ov_SC06_000/ov_SC06_000_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018A7C0; +extern u8 D_8018A730; +extern u8 D_8018A70C; +extern u8 D_8018A6E8; +extern u8 D_8018A79C; +extern u8 D_8018A778; +extern u8 D_8018A754; +extern u8 D_8018A6C4; +extern void func_80145934(void); +extern u8 D_8018A850; +extern u8 D_8018A82C; +extern u8 D_8018A808; +extern u8 D_8018A7E4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80189C48[]; +extern unsigned char D_80189C78[]; +extern unsigned char D_80189CC8[]; +extern unsigned char D_80189CF8[]; +extern unsigned char D_80189D28[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80189D78[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80189E40[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80189EC8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80189ED0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801AD480; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801AD484; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80189F00; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80189FA8[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80189FCC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80189FBC; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80189FE0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80189FEC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80189FFC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018A014[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018A004; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018A028[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018A044[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018A034; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018A058[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018A06C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018A080; +extern void (*D_8018A0A8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018A088; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018A0B4[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018A0F4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018A0F8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018A2EC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018A55C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018A56C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801AD4B8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018A594[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018A574; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018A584; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018A5D4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018A5DC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018A5A8; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018A5E8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018A5B8; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801AD4C0; +extern s32 D_801AD4CC; +extern s32 D_801AD4D0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018A624[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801AD4C0; +extern int D_801AD4CC; +extern int D_801AD4D0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018A628[])(void); + extern int D_801AD4C4; + extern int D_801AD4C8; + short sVar1; + + D_8018A628[*(unsigned short *)(param_1 + 2)](); + switch (D_801AD4C0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801AD4C8 = 0; + D_801AD4C4 = 0x46; + D_801AD4C0 += 1; + break; + case 2: + if (D_801AD4C4 == 0) { + if (SsGetMute() == 0) { + D_801AD4C0 += 1; + } + } else { + D_801AD4C4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801AD4C0 += 1; + } + break; + case 4: + D_801AD4CC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801AD4C4 = 0xd2; + } else { + D_801AD4C4 = 1; + } + break; + case 5: + D_801AD4C4 -= 1; + if (D_801AD4C4 == -1 || D_801AD4D0 != 0) { + D_801AD4C4 = 0; + D_801AD4C0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801AD4C4 = 0x28; + D_801AD4C0 += 1; + break; + case 7: + if (D_801AD4C4 == 0) { + if (SsGetMute() == 0) { + D_801AD4C0 += 1; + } + } else { + D_801AD4C4 -= 1; + } + break; + case 8: + D_801AD4C8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801AD4C0; + +void func_80158BB0(void *arg0) { + if (D_801AD4C0 == 0) { + D_801AD4C0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801AD4CC; +extern s32 D_8018A5F8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801AD4CC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018A5F8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801AD4D0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801AD4D0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801AD4C0; +extern s32 D_801AD4C8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801AD4C0 == 4) { + D_801AD4C0 = 5; + } + if (D_801AD4C8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018A660[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018A660; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_801588CC", func_801594E8); + + +extern void (*D_8018A874[])(void); + +void func_80159698(void *a0) { + D_8018A874[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018A694)); + func_80028620(1, &(*(u8 *)&D_8018A694) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018A694) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018A918[])(void); + +void func_80159968(void *a0) { + D_8018A918[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018AA6C[])(void); + +void func_80159B70(void *a0) { + D_8018AA6C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018A888; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018A888); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_006/ov_SC06_006_jr_80154C24.c b/src/ov_SC06_006/ov_SC06_006_jr_80154C24.c index 9fe9daf66..f07b9fd0f 100644 --- a/src/ov_SC06_006/ov_SC06_006_jr_80154C24.c +++ b/src/ov_SC06_006/ov_SC06_006_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80184148[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801F6F08; - -void func_80158BB0(void *arg0) { - if (D_801F6F08 == 0) { - D_801F6F08 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801F6F14; -extern s32 D_8018411C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801F6F14; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018411C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801F6F18; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801F6F18 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801F6F08; -extern s32 D_801F6F10; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801F6F08 == 4) { - D_801F6F08 = 5; - } - if (D_801F6F10 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184184[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184184; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_80154C24", func_801594E8); - - -extern void (*D_80184398[])(void); - -void func_80159698(void *a0) { - D_80184398[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801841B8)); - func_80028620(1, &(*(u8 *)&D_801841B8) + 0x10); - func_80028620(2, &(*(u8 *)&D_801841B8) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018443C[])(void); - -void func_80159968(void *a0) { - D_8018443C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80184590[])(void); - -void func_80159B70(void *a0) { - D_80184590[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801843AC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801843AC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_006/ov_SC06_006_jr_801588CC.c b/src/ov_SC06_006/ov_SC06_006_jr_801588CC.c new file mode 100644 index 000000000..35a06a02c --- /dev/null +++ b/src/ov_SC06_006/ov_SC06_006_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801842E4; +extern u8 D_80184254; +extern u8 D_80184230; +extern u8 D_8018420C; +extern u8 D_801842C0; +extern u8 D_8018429C; +extern u8 D_80184278; +extern u8 D_801841E8; +extern void func_80145934(void); +extern u8 D_80184374; +extern u8 D_80184350; +extern u8 D_8018432C; +extern u8 D_80184308; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018376C[]; +extern unsigned char D_8018379C[]; +extern unsigned char D_801837EC[]; +extern unsigned char D_8018381C[]; +extern unsigned char D_8018384C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018389C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80183964[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801839EC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801839F4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801F6EC8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801F6ECC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80183A24; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80183ACC[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80183AF0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80183AE0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80183B04[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80183B10[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80183B20[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80183B38[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183B28; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80183B4C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80183B68[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183B58; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80183B7C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80183B90[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80183BA4; +extern void (*D_80183BCC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183BAC; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80183BD8[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80183C18[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80183C1C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80183E10[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184080[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184090[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801F6F00; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801840B8[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80184098; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801840A8; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801840F8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80184100[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801840CC; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018410C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801840DC; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801F6F08; +extern s32 D_801F6F14; +extern s32 D_801F6F18; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184148[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801F6F08; +extern int D_801F6F14; +extern int D_801F6F18; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018414C[])(void); + extern int D_801F6F0C; + extern int D_801F6F10; + short sVar1; + + D_8018414C[*(unsigned short *)(param_1 + 2)](); + switch (D_801F6F08) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801F6F10 = 0; + D_801F6F0C = 0x46; + D_801F6F08 += 1; + break; + case 2: + if (D_801F6F0C == 0) { + if (SsGetMute() == 0) { + D_801F6F08 += 1; + } + } else { + D_801F6F0C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801F6F08 += 1; + } + break; + case 4: + D_801F6F14 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801F6F0C = 0xd2; + } else { + D_801F6F0C = 1; + } + break; + case 5: + D_801F6F0C -= 1; + if (D_801F6F0C == -1 || D_801F6F18 != 0) { + D_801F6F0C = 0; + D_801F6F08 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801F6F0C = 0x28; + D_801F6F08 += 1; + break; + case 7: + if (D_801F6F0C == 0) { + if (SsGetMute() == 0) { + D_801F6F08 += 1; + } + } else { + D_801F6F0C -= 1; + } + break; + case 8: + D_801F6F10 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801F6F08; + +void func_80158BB0(void *arg0) { + if (D_801F6F08 == 0) { + D_801F6F08 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801F6F14; +extern s32 D_8018411C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801F6F14; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018411C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801F6F18; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801F6F18 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801F6F08; +extern s32 D_801F6F10; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801F6F08 == 4) { + D_801F6F08 = 5; + } + if (D_801F6F10 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184184[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184184; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_801588CC", func_801594E8); + + +extern void (*D_80184398[])(void); + +void func_80159698(void *a0) { + D_80184398[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801841B8)); + func_80028620(1, &(*(u8 *)&D_801841B8) + 0x10); + func_80028620(2, &(*(u8 *)&D_801841B8) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018443C[])(void); + +void func_80159968(void *a0) { + D_8018443C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80184590[])(void); + +void func_80159B70(void *a0) { + D_80184590[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801843AC; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801843AC); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_008/ov_SC06_008_jr_80154C24.c b/src/ov_SC06_008/ov_SC06_008_jr_80154C24.c index dbb414cf7..c03a8d3f7 100644 --- a/src/ov_SC06_008/ov_SC06_008_jr_80154C24.c +++ b/src/ov_SC06_008/ov_SC06_008_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80187BB0[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A8E88; - -void func_80158BB0(void *arg0) { - if (D_801A8E88 == 0) { - D_801A8E88 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A8E94; -extern s32 D_80187B84[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A8E94; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187B84[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A8E98; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A8E98 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A8E88; -extern s32 D_801A8E90; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A8E88 == 4) { - D_801A8E88 = 5; - } - if (D_801A8E90 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80187BEC[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80187BEC; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_80154C24", func_801594E8); - - -extern void (*D_80187E00[])(void); - -void func_80159698(void *a0) { - D_80187E00[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80187C20)); - func_80028620(1, &(*(u8 *)&D_80187C20) + 0x10); - func_80028620(2, &(*(u8 *)&D_80187C20) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80187EA4[])(void); - -void func_80159968(void *a0) { - D_80187EA4[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80187FF8[])(void); - -void func_80159B70(void *a0) { - D_80187FF8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80187E14; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187E14); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_008/ov_SC06_008_jr_801588CC.c b/src/ov_SC06_008/ov_SC06_008_jr_801588CC.c new file mode 100644 index 000000000..e31b8a301 --- /dev/null +++ b/src/ov_SC06_008/ov_SC06_008_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80187D4C; +extern u8 D_80187CBC; +extern u8 D_80187C98; +extern u8 D_80187C74; +extern u8 D_80187D28; +extern u8 D_80187D04; +extern u8 D_80187CE0; +extern u8 D_80187C50; +extern void func_80145934(void); +extern u8 D_80187DDC; +extern u8 D_80187DB8; +extern u8 D_80187D94; +extern u8 D_80187D70; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801871D4[]; +extern unsigned char D_80187204[]; +extern unsigned char D_80187254[]; +extern unsigned char D_80187284[]; +extern unsigned char D_801872B4[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80187304[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801873CC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80187454[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018745C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A8E48; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A8E4C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018748C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80187534[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80187558[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80187548; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018756C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80187578[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80187588[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801875A0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80187590; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801875B4[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801875D0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801875C0; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801875E4[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801875F8[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018760C; +extern void (*D_80187634[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80187614; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80187640[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80187680[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80187684[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80187878[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80187AE8[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80187AF8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A8E80; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80187B20[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80187B00; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80187B10; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80187B60[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80187B68[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80187B34; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80187B74[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80187B44; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A8E88; +extern s32 D_801A8E94; +extern s32 D_801A8E98; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187BB0[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A8E88; +extern int D_801A8E94; +extern int D_801A8E98; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80187BB4[])(void); + extern int D_801A8E8C; + extern int D_801A8E90; + short sVar1; + + D_80187BB4[*(unsigned short *)(param_1 + 2)](); + switch (D_801A8E88) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A8E90 = 0; + D_801A8E8C = 0x46; + D_801A8E88 += 1; + break; + case 2: + if (D_801A8E8C == 0) { + if (SsGetMute() == 0) { + D_801A8E88 += 1; + } + } else { + D_801A8E8C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A8E88 += 1; + } + break; + case 4: + D_801A8E94 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A8E8C = 0xd2; + } else { + D_801A8E8C = 1; + } + break; + case 5: + D_801A8E8C -= 1; + if (D_801A8E8C == -1 || D_801A8E98 != 0) { + D_801A8E8C = 0; + D_801A8E88 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A8E8C = 0x28; + D_801A8E88 += 1; + break; + case 7: + if (D_801A8E8C == 0) { + if (SsGetMute() == 0) { + D_801A8E88 += 1; + } + } else { + D_801A8E8C -= 1; + } + break; + case 8: + D_801A8E90 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A8E88; + +void func_80158BB0(void *arg0) { + if (D_801A8E88 == 0) { + D_801A8E88 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A8E94; +extern s32 D_80187B84[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A8E94; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187B84[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A8E98; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A8E98 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A8E88; +extern s32 D_801A8E90; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A8E88 == 4) { + D_801A8E88 = 5; + } + if (D_801A8E90 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80187BEC[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80187BEC; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_801588CC", func_801594E8); + + +extern void (*D_80187E00[])(void); + +void func_80159698(void *a0) { + D_80187E00[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80187C20)); + func_80028620(1, &(*(u8 *)&D_80187C20) + 0x10); + func_80028620(2, &(*(u8 *)&D_80187C20) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80187EA4[])(void); + +void func_80159968(void *a0) { + D_80187EA4[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80187FF8[])(void); + +void func_80159B70(void *a0) { + D_80187FF8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80187E14; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187E14); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_010/ov_SC06_010_jr_80154C24.c b/src/ov_SC06_010/ov_SC06_010_jr_80154C24.c index 50e4d8d8a..2d2e6e35b 100644 --- a/src/ov_SC06_010/ov_SC06_010_jr_80154C24.c +++ b/src/ov_SC06_010/ov_SC06_010_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80188D8C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B0EC0; - -void func_80158BB0(void *arg0) { - if (D_801B0EC0 == 0) { - D_801B0EC0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B0ECC; -extern s32 D_80188D60[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B0ECC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188D60[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B0ED0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B0ED0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B0EC0; -extern s32 D_801B0EC8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B0EC0 == 4) { - D_801B0EC0 = 5; - } - if (D_801B0EC8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80188DC8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80188DC8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_80154C24", func_801594E8); - - -extern void (*D_80188FDC[])(void); - -void func_80159698(void *a0) { - D_80188FDC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80188DFC)); - func_80028620(1, &(*(u8 *)&D_80188DFC) + 0x10); - func_80028620(2, &(*(u8 *)&D_80188DFC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80189080[])(void); - -void func_80159968(void *a0) { - D_80189080[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801891D4[])(void); - -void func_80159B70(void *a0) { - D_801891D4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80188FF0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188FF0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_010/ov_SC06_010_jr_801588CC.c b/src/ov_SC06_010/ov_SC06_010_jr_801588CC.c new file mode 100644 index 000000000..8c39959df --- /dev/null +++ b/src/ov_SC06_010/ov_SC06_010_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80188F28; +extern u8 D_80188E98; +extern u8 D_80188E74; +extern u8 D_80188E50; +extern u8 D_80188F04; +extern u8 D_80188EE0; +extern u8 D_80188EBC; +extern u8 D_80188E2C; +extern void func_80145934(void); +extern u8 D_80188FB8; +extern u8 D_80188F94; +extern u8 D_80188F70; +extern u8 D_80188F4C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801883B0[]; +extern unsigned char D_801883E0[]; +extern unsigned char D_80188430[]; +extern unsigned char D_80188460[]; +extern unsigned char D_80188490[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801884E0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801885A8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80188630[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80188638; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B0E80; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B0E84; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80188668; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80188710[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80188734[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80188724; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80188748[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80188754[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80188764[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018877C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018876C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80188790[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801887AC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018879C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801887C0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801887D4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801887E8; +extern void (*D_80188810[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801887F0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018881C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018885C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80188860[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80188A54[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80188CC4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80188CD4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B0EB8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80188CFC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80188CDC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80188CEC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80188D3C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80188D44[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80188D10; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80188D50[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80188D20; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B0EC0; +extern s32 D_801B0ECC; +extern s32 D_801B0ED0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188D8C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B0EC0; +extern int D_801B0ECC; +extern int D_801B0ED0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80188D90[])(void); + extern int D_801B0EC4; + extern int D_801B0EC8; + short sVar1; + + D_80188D90[*(unsigned short *)(param_1 + 2)](); + switch (D_801B0EC0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B0EC8 = 0; + D_801B0EC4 = 0x46; + D_801B0EC0 += 1; + break; + case 2: + if (D_801B0EC4 == 0) { + if (SsGetMute() == 0) { + D_801B0EC0 += 1; + } + } else { + D_801B0EC4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B0EC0 += 1; + } + break; + case 4: + D_801B0ECC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B0EC4 = 0xd2; + } else { + D_801B0EC4 = 1; + } + break; + case 5: + D_801B0EC4 -= 1; + if (D_801B0EC4 == -1 || D_801B0ED0 != 0) { + D_801B0EC4 = 0; + D_801B0EC0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B0EC4 = 0x28; + D_801B0EC0 += 1; + break; + case 7: + if (D_801B0EC4 == 0) { + if (SsGetMute() == 0) { + D_801B0EC0 += 1; + } + } else { + D_801B0EC4 -= 1; + } + break; + case 8: + D_801B0EC8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B0EC0; + +void func_80158BB0(void *arg0) { + if (D_801B0EC0 == 0) { + D_801B0EC0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B0ECC; +extern s32 D_80188D60[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B0ECC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188D60[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B0ED0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B0ED0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B0EC0; +extern s32 D_801B0EC8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B0EC0 == 4) { + D_801B0EC0 = 5; + } + if (D_801B0EC8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80188DC8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80188DC8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_801588CC", func_801594E8); + + +extern void (*D_80188FDC[])(void); + +void func_80159698(void *a0) { + D_80188FDC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80188DFC)); + func_80028620(1, &(*(u8 *)&D_80188DFC) + 0x10); + func_80028620(2, &(*(u8 *)&D_80188DFC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80189080[])(void); + +void func_80159968(void *a0) { + D_80189080[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801891D4[])(void); + +void func_80159B70(void *a0) { + D_801891D4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80188FF0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188FF0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_011/ov_SC06_011_jr_80154C24.c b/src/ov_SC06_011/ov_SC06_011_jr_80154C24.c index 2cbc1d66f..c643ecd98 100644 --- a/src/ov_SC06_011/ov_SC06_011_jr_80154C24.c +++ b/src/ov_SC06_011/ov_SC06_011_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801827EC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801AAA70; - -void func_80158BB0(void *arg0) { - if (D_801AAA70 == 0) { - D_801AAA70 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801AAA7C; -extern s32 D_801827C0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801AAA7C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801827C0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801AAA80; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801AAA80 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801AAA70; -extern s32 D_801AAA78; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801AAA70 == 4) { - D_801AAA70 = 5; - } - if (D_801AAA78 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80182828[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80182828; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_80154C24", func_801594E8); - - -extern void (*D_80182A3C[])(void); - -void func_80159698(void *a0) { - D_80182A3C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018285C)); - func_80028620(1, &(*(u8 *)&D_8018285C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018285C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80182AE0[])(void); - -void func_80159968(void *a0) { - D_80182AE0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80182C34[])(void); - -void func_80159B70(void *a0) { - D_80182C34[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80182A50; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80182A50); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_011/ov_SC06_011_jr_801588CC.c b/src/ov_SC06_011/ov_SC06_011_jr_801588CC.c new file mode 100644 index 000000000..2cc8d9f63 --- /dev/null +++ b/src/ov_SC06_011/ov_SC06_011_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80182988; +extern u8 D_801828F8; +extern u8 D_801828D4; +extern u8 D_801828B0; +extern u8 D_80182964; +extern u8 D_80182940; +extern u8 D_8018291C; +extern u8 D_8018288C; +extern void func_80145934(void); +extern u8 D_80182A18; +extern u8 D_801829F4; +extern u8 D_801829D0; +extern u8 D_801829AC; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80181E10[]; +extern unsigned char D_80181E40[]; +extern unsigned char D_80181E90[]; +extern unsigned char D_80181EC0[]; +extern unsigned char D_80181EF0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80181F40[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80182008[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80182090[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80182098; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801AAA30; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801AAA34; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801820C8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80182170[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80182194[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80182184; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801821A8[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801821B4[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801821C4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801821DC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801821CC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801821F0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018220C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801821FC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80182220[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80182234[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80182248; +extern void (*D_80182270[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80182250; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018227C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801822BC[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801822C0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801824B4[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80182724[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80182734[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801AAA68; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018275C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018273C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018274C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018279C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801827A4[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182770; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801827B0[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80182780; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801AAA70; +extern s32 D_801AAA7C; +extern s32 D_801AAA80; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801827EC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801AAA70; +extern int D_801AAA7C; +extern int D_801AAA80; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801827F0[])(void); + extern int D_801AAA74; + extern int D_801AAA78; + short sVar1; + + D_801827F0[*(unsigned short *)(param_1 + 2)](); + switch (D_801AAA70) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801AAA78 = 0; + D_801AAA74 = 0x46; + D_801AAA70 += 1; + break; + case 2: + if (D_801AAA74 == 0) { + if (SsGetMute() == 0) { + D_801AAA70 += 1; + } + } else { + D_801AAA74 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801AAA70 += 1; + } + break; + case 4: + D_801AAA7C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801AAA74 = 0xd2; + } else { + D_801AAA74 = 1; + } + break; + case 5: + D_801AAA74 -= 1; + if (D_801AAA74 == -1 || D_801AAA80 != 0) { + D_801AAA74 = 0; + D_801AAA70 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801AAA74 = 0x28; + D_801AAA70 += 1; + break; + case 7: + if (D_801AAA74 == 0) { + if (SsGetMute() == 0) { + D_801AAA70 += 1; + } + } else { + D_801AAA74 -= 1; + } + break; + case 8: + D_801AAA78 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801AAA70; + +void func_80158BB0(void *arg0) { + if (D_801AAA70 == 0) { + D_801AAA70 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801AAA7C; +extern s32 D_801827C0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801AAA7C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801827C0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801AAA80; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801AAA80 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801AAA70; +extern s32 D_801AAA78; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801AAA70 == 4) { + D_801AAA70 = 5; + } + if (D_801AAA78 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80182828[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80182828; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_801588CC", func_801594E8); + + +extern void (*D_80182A3C[])(void); + +void func_80159698(void *a0) { + D_80182A3C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018285C)); + func_80028620(1, &(*(u8 *)&D_8018285C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018285C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80182AE0[])(void); + +void func_80159968(void *a0) { + D_80182AE0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80182C34[])(void); + +void func_80159B70(void *a0) { + D_80182C34[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80182A50; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80182A50); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_013/ov_SC06_013_jr_80154C24.c b/src/ov_SC06_013/ov_SC06_013_jr_80154C24.c index 286bddb3e..a31b1a44a 100644 --- a/src/ov_SC06_013/ov_SC06_013_jr_80154C24.c +++ b/src/ov_SC06_013/ov_SC06_013_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180F68[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_80199928; - -void func_80158BB0(void *arg0) { - if (D_80199928 == 0) { - D_80199928 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_80199934; -extern s32 D_80180F3C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_80199934; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180F3C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80199938; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80199938 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_80199928; -extern s32 D_80199930; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_80199928 == 4) { - D_80199928 = 5; - } - if (D_80199930 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80180FA4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80180FA4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_80154C24", func_801594E8); - - -extern void (*D_801811B8[])(void); - -void func_80159698(void *a0) { - D_801811B8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180FD8)); - func_80028620(1, &(*(u8 *)&D_80180FD8) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180FD8) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018125C[])(void); - -void func_80159968(void *a0) { - D_8018125C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801813B0[])(void); - -void func_80159B70(void *a0) { - D_801813B0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801811CC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801811CC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_013/ov_SC06_013_jr_801588CC.c b/src/ov_SC06_013/ov_SC06_013_jr_801588CC.c new file mode 100644 index 000000000..a51a92b61 --- /dev/null +++ b/src/ov_SC06_013/ov_SC06_013_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80181104; +extern u8 D_80181074; +extern u8 D_80181050; +extern u8 D_8018102C; +extern u8 D_801810E0; +extern u8 D_801810BC; +extern u8 D_80181098; +extern u8 D_80181008; +extern void func_80145934(void); +extern u8 D_80181194; +extern u8 D_80181170; +extern u8 D_8018114C; +extern u8 D_80181128; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018058C[]; +extern unsigned char D_801805BC[]; +extern unsigned char D_8018060C[]; +extern unsigned char D_8018063C[]; +extern unsigned char D_8018066C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801806BC[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80180784[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018080C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80180814; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801998E8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801998EC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180844; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801808EC[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80180910[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80180900; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80180924[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80180930[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80180940[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80180958[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180948; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018096C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80180988[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180978; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018099C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801809B0[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801809C4; +extern void (*D_801809EC[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801809CC; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801809F8[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80180A38[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80180A3C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80180C30[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80180EA0[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80180EB0[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_80199920; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180ED8[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180EB8; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180EC8; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180F18[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80180F20[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180EEC; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80180F2C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180EFC; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_80199928; +extern s32 D_80199934; +extern s32 D_80199938; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180F68[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_80199928; +extern int D_80199934; +extern int D_80199938; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80180F6C[])(void); + extern int D_8019992C; + extern int D_80199930; + short sVar1; + + D_80180F6C[*(unsigned short *)(param_1 + 2)](); + switch (D_80199928) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80199930 = 0; + D_8019992C = 0x46; + D_80199928 += 1; + break; + case 2: + if (D_8019992C == 0) { + if (SsGetMute() == 0) { + D_80199928 += 1; + } + } else { + D_8019992C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_80199928 += 1; + } + break; + case 4: + D_80199934 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019992C = 0xd2; + } else { + D_8019992C = 1; + } + break; + case 5: + D_8019992C -= 1; + if (D_8019992C == -1 || D_80199938 != 0) { + D_8019992C = 0; + D_80199928 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019992C = 0x28; + D_80199928 += 1; + break; + case 7: + if (D_8019992C == 0) { + if (SsGetMute() == 0) { + D_80199928 += 1; + } + } else { + D_8019992C -= 1; + } + break; + case 8: + D_80199930 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_80199928; + +void func_80158BB0(void *arg0) { + if (D_80199928 == 0) { + D_80199928 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_80199934; +extern s32 D_80180F3C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_80199934; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180F3C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80199938; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80199938 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_80199928; +extern s32 D_80199930; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_80199928 == 4) { + D_80199928 = 5; + } + if (D_80199930 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80180FA4[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80180FA4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_801588CC", func_801594E8); + + +extern void (*D_801811B8[])(void); + +void func_80159698(void *a0) { + D_801811B8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180FD8)); + func_80028620(1, &(*(u8 *)&D_80180FD8) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180FD8) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018125C[])(void); + +void func_80159968(void *a0) { + D_8018125C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801813B0[])(void); + +void func_80159B70(void *a0) { + D_801813B0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801811CC; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801811CC); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_014/ov_SC06_014_jr_80154C24.c b/src/ov_SC06_014/ov_SC06_014_jr_80154C24.c index de7143665..b5256ac7c 100644 --- a/src/ov_SC06_014/ov_SC06_014_jr_80154C24.c +++ b/src/ov_SC06_014/ov_SC06_014_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801822CC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A0318; - -void func_80158BB0(void *arg0) { - if (D_801A0318 == 0) { - D_801A0318 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A0324; -extern s32 D_801822A0[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A0324; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801822A0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A0328; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A0328 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A0318; -extern s32 D_801A0320; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A0318 == 4) { - D_801A0318 = 5; - } - if (D_801A0320 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80182308[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80182308; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_80154C24", func_801594E8); - - -extern void (*D_8018251C[])(void); - -void func_80159698(void *a0) { - D_8018251C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018233C)); - func_80028620(1, &(*(u8 *)&D_8018233C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018233C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801825C0[])(void); - -void func_80159968(void *a0) { - D_801825C0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80182714[])(void); - -void func_80159B70(void *a0) { - D_80182714[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80182530; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80182530); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_014/ov_SC06_014_jr_801588CC.c b/src/ov_SC06_014/ov_SC06_014_jr_801588CC.c new file mode 100644 index 000000000..0fa86ba1c --- /dev/null +++ b/src/ov_SC06_014/ov_SC06_014_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80182468; +extern u8 D_801823D8; +extern u8 D_801823B4; +extern u8 D_80182390; +extern u8 D_80182444; +extern u8 D_80182420; +extern u8 D_801823FC; +extern u8 D_8018236C; +extern void func_80145934(void); +extern u8 D_801824F8; +extern u8 D_801824D4; +extern u8 D_801824B0; +extern u8 D_8018248C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801818F0[]; +extern unsigned char D_80181920[]; +extern unsigned char D_80181970[]; +extern unsigned char D_801819A0[]; +extern unsigned char D_801819D0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80181A20[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80181AE8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80181B70[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80181B78; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A02D8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A02DC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80181BA8; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80181C50[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80181C74[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80181C64; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80181C88[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80181C94[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80181CA4[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80181CBC[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181CAC; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80181CD0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80181CEC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181CDC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80181D00[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80181D14[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80181D28; +extern void (*D_80181D50[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181D30; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80181D5C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80181D9C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80181DA0[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80181F94[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80182204[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80182214[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A0310; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018223C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018221C; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018222C; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018227C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80182284[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80182250; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80182290[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80182260; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A0318; +extern s32 D_801A0324; +extern s32 D_801A0328; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801822CC[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A0318; +extern int D_801A0324; +extern int D_801A0328; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801822D0[])(void); + extern int D_801A031C; + extern int D_801A0320; + short sVar1; + + D_801822D0[*(unsigned short *)(param_1 + 2)](); + switch (D_801A0318) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A0320 = 0; + D_801A031C = 0x46; + D_801A0318 += 1; + break; + case 2: + if (D_801A031C == 0) { + if (SsGetMute() == 0) { + D_801A0318 += 1; + } + } else { + D_801A031C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A0318 += 1; + } + break; + case 4: + D_801A0324 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A031C = 0xd2; + } else { + D_801A031C = 1; + } + break; + case 5: + D_801A031C -= 1; + if (D_801A031C == -1 || D_801A0328 != 0) { + D_801A031C = 0; + D_801A0318 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A031C = 0x28; + D_801A0318 += 1; + break; + case 7: + if (D_801A031C == 0) { + if (SsGetMute() == 0) { + D_801A0318 += 1; + } + } else { + D_801A031C -= 1; + } + break; + case 8: + D_801A0320 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A0318; + +void func_80158BB0(void *arg0) { + if (D_801A0318 == 0) { + D_801A0318 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A0324; +extern s32 D_801822A0[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A0324; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801822A0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A0328; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A0328 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A0318; +extern s32 D_801A0320; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A0318 == 4) { + D_801A0318 = 5; + } + if (D_801A0320 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80182308[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80182308; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_801588CC", func_801594E8); + + +extern void (*D_8018251C[])(void); + +void func_80159698(void *a0) { + D_8018251C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018233C)); + func_80028620(1, &(*(u8 *)&D_8018233C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018233C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801825C0[])(void); + +void func_80159968(void *a0) { + D_801825C0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80182714[])(void); + +void func_80159B70(void *a0) { + D_80182714[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80182530; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80182530); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_015/ov_SC06_015_jr_80154C24.c b/src/ov_SC06_015/ov_SC06_015_jr_80154C24.c index 98e745f2e..f39d0edc3 100644 --- a/src/ov_SC06_015/ov_SC06_015_jr_80154C24.c +++ b/src/ov_SC06_015/ov_SC06_015_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180E24[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801936F8; - -void func_80158BB0(void *arg0) { - if (D_801936F8 == 0) { - D_801936F8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_80193704; -extern s32 D_80180DF8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_80193704; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180DF8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80193708; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80193708 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801936F8; -extern s32 D_80193700; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801936F8 == 4) { - D_801936F8 = 5; - } - if (D_80193700 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80180E60[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80180E60; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_80154C24", func_801594E8); - - -extern void (*D_80181074[])(void); - -void func_80159698(void *a0) { - D_80181074[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180E94)); - func_80028620(1, &(*(u8 *)&D_80180E94) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180E94) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80181118[])(void); - -void func_80159968(void *a0) { - D_80181118[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018126C[])(void); - -void func_80159B70(void *a0) { - D_8018126C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80181088; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181088); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_015/ov_SC06_015_jr_801588CC.c b/src/ov_SC06_015/ov_SC06_015_jr_801588CC.c new file mode 100644 index 000000000..36aac169a --- /dev/null +++ b/src/ov_SC06_015/ov_SC06_015_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80180FC0; +extern u8 D_80180F30; +extern u8 D_80180F0C; +extern u8 D_80180EE8; +extern u8 D_80180F9C; +extern u8 D_80180F78; +extern u8 D_80180F54; +extern u8 D_80180EC4; +extern void func_80145934(void); +extern u8 D_80181050; +extern u8 D_8018102C; +extern u8 D_80181008; +extern u8 D_80180FE4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80180448[]; +extern unsigned char D_80180478[]; +extern unsigned char D_801804C8[]; +extern unsigned char D_801804F8[]; +extern unsigned char D_80180528[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80180578[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80180640[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801806C8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801806D0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801936B8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801936BC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80180700; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801807A8[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801807CC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801807BC; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801807E0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801807EC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801807FC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80180814[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80180804; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80180828[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80180844[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80180834; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80180858[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018086C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80180880; +extern void (*D_801808A8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80180888; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801808B4[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801808F4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801808F8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80180AEC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80180D5C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80180D6C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801936F0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80180D94[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180D74; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80180D84; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180DD4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80180DDC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80180DA8; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80180DE8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180DB8; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801936F8; +extern s32 D_80193704; +extern s32 D_80193708; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180E24[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801936F8; +extern int D_80193704; +extern int D_80193708; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80180E28[])(void); + extern int D_801936FC; + extern int D_80193700; + short sVar1; + + D_80180E28[*(unsigned short *)(param_1 + 2)](); + switch (D_801936F8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80193700 = 0; + D_801936FC = 0x46; + D_801936F8 += 1; + break; + case 2: + if (D_801936FC == 0) { + if (SsGetMute() == 0) { + D_801936F8 += 1; + } + } else { + D_801936FC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801936F8 += 1; + } + break; + case 4: + D_80193704 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801936FC = 0xd2; + } else { + D_801936FC = 1; + } + break; + case 5: + D_801936FC -= 1; + if (D_801936FC == -1 || D_80193708 != 0) { + D_801936FC = 0; + D_801936F8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801936FC = 0x28; + D_801936F8 += 1; + break; + case 7: + if (D_801936FC == 0) { + if (SsGetMute() == 0) { + D_801936F8 += 1; + } + } else { + D_801936FC -= 1; + } + break; + case 8: + D_80193700 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801936F8; + +void func_80158BB0(void *arg0) { + if (D_801936F8 == 0) { + D_801936F8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_80193704; +extern s32 D_80180DF8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_80193704; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180DF8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80193708; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80193708 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801936F8; +extern s32 D_80193700; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801936F8 == 4) { + D_801936F8 = 5; + } + if (D_80193700 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80180E60[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80180E60; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_801588CC", func_801594E8); + + +extern void (*D_80181074[])(void); + +void func_80159698(void *a0) { + D_80181074[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180E94)); + func_80028620(1, &(*(u8 *)&D_80180E94) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180E94) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80181118[])(void); + +void func_80159968(void *a0) { + D_80181118[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018126C[])(void); + +void func_80159B70(void *a0) { + D_8018126C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80181088; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80181088); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_016/ov_SC06_016_jr_80154C24.c b/src/ov_SC06_016/ov_SC06_016_jr_80154C24.c index 1c2292d7d..ad52a365f 100644 --- a/src/ov_SC06_016/ov_SC06_016_jr_80154C24.c +++ b/src/ov_SC06_016/ov_SC06_016_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80187234[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019E4C8; - -void func_80158BB0(void *arg0) { - if (D_8019E4C8 == 0) { - D_8019E4C8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019E4D4; -extern s32 D_80187208[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019E4D4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187208[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019E4D8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019E4D8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019E4C8; -extern s32 D_8019E4D0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019E4C8 == 4) { - D_8019E4C8 = 5; - } - if (D_8019E4D0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80187270[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80187270; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_80154C24", func_801594E8); - - -extern void (*D_80187484[])(void); - -void func_80159698(void *a0) { - D_80187484[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801872A4)); - func_80028620(1, &(*(u8 *)&D_801872A4) + 0x10); - func_80028620(2, &(*(u8 *)&D_801872A4) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80187528[])(void); - -void func_80159968(void *a0) { - D_80187528[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018767C[])(void); - -void func_80159B70(void *a0) { - D_8018767C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80187498; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187498); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_016/ov_SC06_016_jr_801588CC.c b/src/ov_SC06_016/ov_SC06_016_jr_801588CC.c new file mode 100644 index 000000000..ed98747f5 --- /dev/null +++ b/src/ov_SC06_016/ov_SC06_016_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801873D0; +extern u8 D_80187340; +extern u8 D_8018731C; +extern u8 D_801872F8; +extern u8 D_801873AC; +extern u8 D_80187388; +extern u8 D_80187364; +extern u8 D_801872D4; +extern void func_80145934(void); +extern u8 D_80187460; +extern u8 D_8018743C; +extern u8 D_80187418; +extern u8 D_801873F4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80186858[]; +extern unsigned char D_80186888[]; +extern unsigned char D_801868D8[]; +extern unsigned char D_80186908[]; +extern unsigned char D_80186938[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80186988[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80186A50[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80186AD8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80186AE0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019E488; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019E48C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80186B10; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80186BB8[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80186BDC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80186BCC; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80186BF0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80186BFC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80186C0C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80186C24[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186C14; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80186C38[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80186C54[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186C44; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80186C68[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80186C7C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80186C90; +extern void (*D_80186CB8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186C98; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80186CC4[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80186D04[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80186D08[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80186EFC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018716C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018717C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019E4C0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801871A4[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80187184; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80187194; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801871E4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801871EC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801871B8; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801871F8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801871C8; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019E4C8; +extern s32 D_8019E4D4; +extern s32 D_8019E4D8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187234[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019E4C8; +extern int D_8019E4D4; +extern int D_8019E4D8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80187238[])(void); + extern int D_8019E4CC; + extern int D_8019E4D0; + short sVar1; + + D_80187238[*(unsigned short *)(param_1 + 2)](); + switch (D_8019E4C8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019E4D0 = 0; + D_8019E4CC = 0x46; + D_8019E4C8 += 1; + break; + case 2: + if (D_8019E4CC == 0) { + if (SsGetMute() == 0) { + D_8019E4C8 += 1; + } + } else { + D_8019E4CC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019E4C8 += 1; + } + break; + case 4: + D_8019E4D4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019E4CC = 0xd2; + } else { + D_8019E4CC = 1; + } + break; + case 5: + D_8019E4CC -= 1; + if (D_8019E4CC == -1 || D_8019E4D8 != 0) { + D_8019E4CC = 0; + D_8019E4C8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019E4CC = 0x28; + D_8019E4C8 += 1; + break; + case 7: + if (D_8019E4CC == 0) { + if (SsGetMute() == 0) { + D_8019E4C8 += 1; + } + } else { + D_8019E4CC -= 1; + } + break; + case 8: + D_8019E4D0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019E4C8; + +void func_80158BB0(void *arg0) { + if (D_8019E4C8 == 0) { + D_8019E4C8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019E4D4; +extern s32 D_80187208[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019E4D4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187208[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019E4D8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019E4D8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019E4C8; +extern s32 D_8019E4D0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019E4C8 == 4) { + D_8019E4C8 = 5; + } + if (D_8019E4D0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80187270[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80187270; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_801588CC", func_801594E8); + + +extern void (*D_80187484[])(void); + +void func_80159698(void *a0) { + D_80187484[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801872A4)); + func_80028620(1, &(*(u8 *)&D_801872A4) + 0x10); + func_80028620(2, &(*(u8 *)&D_801872A4) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80187528[])(void); + +void func_80159968(void *a0) { + D_80187528[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018767C[])(void); + +void func_80159B70(void *a0) { + D_8018767C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80187498; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187498); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_018/ov_SC06_018_jr_80154C24.c b/src/ov_SC06_018/ov_SC06_018_jr_80154C24.c index 0d140fe0f..a6e72cda6 100644 --- a/src/ov_SC06_018/ov_SC06_018_jr_80154C24.c +++ b/src/ov_SC06_018/ov_SC06_018_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80195970[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801D3DB0; - -void func_80158BB0(void *arg0) { - if (D_801D3DB0 == 0) { - D_801D3DB0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801D3DBC; -extern s32 D_80195944[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801D3DBC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80195944[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801D3DC0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801D3DC0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801D3DB0; -extern s32 D_801D3DB8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801D3DB0 == 4) { - D_801D3DB0 = 5; - } - if (D_801D3DB8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801959AC[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801959AC; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_80154C24", func_801594E8); - - -extern void (*D_80195BC0[])(void); - -void func_80159698(void *a0) { - D_80195BC0[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801959E0)); - func_80028620(1, &(*(u8 *)&D_801959E0) + 0x10); - func_80028620(2, &(*(u8 *)&D_801959E0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80195C64[])(void); - -void func_80159968(void *a0) { - D_80195C64[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80195DB8[])(void); - -void func_80159B70(void *a0) { - D_80195DB8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80195BD4; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80195BD4); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_018/ov_SC06_018_jr_801588CC.c b/src/ov_SC06_018/ov_SC06_018_jr_801588CC.c new file mode 100644 index 000000000..5cb411cf8 --- /dev/null +++ b/src/ov_SC06_018/ov_SC06_018_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80195B0C; +extern u8 D_80195A7C; +extern u8 D_80195A58; +extern u8 D_80195A34; +extern u8 D_80195AE8; +extern u8 D_80195AC4; +extern u8 D_80195AA0; +extern u8 D_80195A10; +extern void func_80145934(void); +extern u8 D_80195B9C; +extern u8 D_80195B78; +extern u8 D_80195B54; +extern u8 D_80195B30; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80194F94[]; +extern unsigned char D_80194FC4[]; +extern unsigned char D_80195014[]; +extern unsigned char D_80195044[]; +extern unsigned char D_80195074[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801950C4[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8019518C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80195214[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8019521C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801D3D70; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801D3D74; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8019524C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801952F4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80195318[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80195308; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8019532C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80195338[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80195348[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80195360[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80195350; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80195374[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80195390[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80195380; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801953A4[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801953B8[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801953CC; +extern void (*D_801953F4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801953D4; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80195400[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80195440[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80195444[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80195638[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801958A8[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801958B8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801D3DA8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801958E0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801958C0; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801958D0; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80195920[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80195928[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801958F4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80195934[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80195904; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801D3DB0; +extern s32 D_801D3DBC; +extern s32 D_801D3DC0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80195970[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801D3DB0; +extern int D_801D3DBC; +extern int D_801D3DC0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80195974[])(void); + extern int D_801D3DB4; + extern int D_801D3DB8; + short sVar1; + + D_80195974[*(unsigned short *)(param_1 + 2)](); + switch (D_801D3DB0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801D3DB8 = 0; + D_801D3DB4 = 0x46; + D_801D3DB0 += 1; + break; + case 2: + if (D_801D3DB4 == 0) { + if (SsGetMute() == 0) { + D_801D3DB0 += 1; + } + } else { + D_801D3DB4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801D3DB0 += 1; + } + break; + case 4: + D_801D3DBC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801D3DB4 = 0xd2; + } else { + D_801D3DB4 = 1; + } + break; + case 5: + D_801D3DB4 -= 1; + if (D_801D3DB4 == -1 || D_801D3DC0 != 0) { + D_801D3DB4 = 0; + D_801D3DB0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801D3DB4 = 0x28; + D_801D3DB0 += 1; + break; + case 7: + if (D_801D3DB4 == 0) { + if (SsGetMute() == 0) { + D_801D3DB0 += 1; + } + } else { + D_801D3DB4 -= 1; + } + break; + case 8: + D_801D3DB8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801D3DB0; + +void func_80158BB0(void *arg0) { + if (D_801D3DB0 == 0) { + D_801D3DB0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801D3DBC; +extern s32 D_80195944[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801D3DBC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80195944[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801D3DC0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801D3DC0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801D3DB0; +extern s32 D_801D3DB8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801D3DB0 == 4) { + D_801D3DB0 = 5; + } + if (D_801D3DB8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801959AC[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801959AC; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_801588CC", func_801594E8); + + +extern void (*D_80195BC0[])(void); + +void func_80159698(void *a0) { + D_80195BC0[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801959E0)); + func_80028620(1, &(*(u8 *)&D_801959E0) + 0x10); + func_80028620(2, &(*(u8 *)&D_801959E0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80195C64[])(void); + +void func_80159968(void *a0) { + D_80195C64[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80195DB8[])(void); + +void func_80159B70(void *a0) { + D_80195DB8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80195BD4; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80195BD4); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_020/ov_SC06_020_jr_80154C24.c b/src/ov_SC06_020/ov_SC06_020_jr_80154C24.c index 5721db0a1..5e5266741 100644 --- a/src/ov_SC06_020/ov_SC06_020_jr_80154C24.c +++ b/src/ov_SC06_020/ov_SC06_020_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801873F8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B95C8; - -void func_80158BB0(void *arg0) { - if (D_801B95C8 == 0) { - D_801B95C8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B95D4; -extern s32 D_801873CC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B95D4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801873CC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B95D8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B95D8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B95C8; -extern s32 D_801B95D0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B95C8 == 4) { - D_801B95C8 = 5; - } - if (D_801B95D0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80187434[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80187434; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_80154C24", func_801594E8); - - -extern void (*D_80187648[])(void); - -void func_80159698(void *a0) { - D_80187648[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80187468)); - func_80028620(1, &(*(u8 *)&D_80187468) + 0x10); - func_80028620(2, &(*(u8 *)&D_80187468) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801876EC[])(void); - -void func_80159968(void *a0) { - D_801876EC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80187840[])(void); - -void func_80159B70(void *a0) { - D_80187840[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018765C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018765C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_020/ov_SC06_020_jr_801588CC.c b/src/ov_SC06_020/ov_SC06_020_jr_801588CC.c new file mode 100644 index 000000000..02baa864d --- /dev/null +++ b/src/ov_SC06_020/ov_SC06_020_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80187594; +extern u8 D_80187504; +extern u8 D_801874E0; +extern u8 D_801874BC; +extern u8 D_80187570; +extern u8 D_8018754C; +extern u8 D_80187528; +extern u8 D_80187498; +extern void func_80145934(void); +extern u8 D_80187624; +extern u8 D_80187600; +extern u8 D_801875DC; +extern u8 D_801875B8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80186A1C[]; +extern unsigned char D_80186A4C[]; +extern unsigned char D_80186A9C[]; +extern unsigned char D_80186ACC[]; +extern unsigned char D_80186AFC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80186B4C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80186C14[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80186C9C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80186CA4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B9588; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B958C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80186CD4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80186D7C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80186DA0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80186D90; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80186DB4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80186DC0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80186DD0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80186DE8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186DD8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80186DFC[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80186E18[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186E08; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80186E2C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80186E40[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80186E54; +extern void (*D_80186E7C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186E5C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80186E88[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80186EC8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80186ECC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801870C0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80187330[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80187340[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B95C0; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80187368[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80187348; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80187358; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801873A8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801873B0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018737C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801873BC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018738C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B95C8; +extern s32 D_801B95D4; +extern s32 D_801B95D8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801873F8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B95C8; +extern int D_801B95D4; +extern int D_801B95D8; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801873FC[])(void); + extern int D_801B95CC; + extern int D_801B95D0; + short sVar1; + + D_801873FC[*(unsigned short *)(param_1 + 2)](); + switch (D_801B95C8) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B95D0 = 0; + D_801B95CC = 0x46; + D_801B95C8 += 1; + break; + case 2: + if (D_801B95CC == 0) { + if (SsGetMute() == 0) { + D_801B95C8 += 1; + } + } else { + D_801B95CC -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B95C8 += 1; + } + break; + case 4: + D_801B95D4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B95CC = 0xd2; + } else { + D_801B95CC = 1; + } + break; + case 5: + D_801B95CC -= 1; + if (D_801B95CC == -1 || D_801B95D8 != 0) { + D_801B95CC = 0; + D_801B95C8 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B95CC = 0x28; + D_801B95C8 += 1; + break; + case 7: + if (D_801B95CC == 0) { + if (SsGetMute() == 0) { + D_801B95C8 += 1; + } + } else { + D_801B95CC -= 1; + } + break; + case 8: + D_801B95D0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B95C8; + +void func_80158BB0(void *arg0) { + if (D_801B95C8 == 0) { + D_801B95C8 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B95D4; +extern s32 D_801873CC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B95D4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801873CC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B95D8; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B95D8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B95C8; +extern s32 D_801B95D0; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B95C8 == 4) { + D_801B95C8 = 5; + } + if (D_801B95D0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80187434[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80187434; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_801588CC", func_801594E8); + + +extern void (*D_80187648[])(void); + +void func_80159698(void *a0) { + D_80187648[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80187468)); + func_80028620(1, &(*(u8 *)&D_80187468) + 0x10); + func_80028620(2, &(*(u8 *)&D_80187468) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801876EC[])(void); + +void func_80159968(void *a0) { + D_801876EC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80187840[])(void); + +void func_80159B70(void *a0) { + D_80187840[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018765C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018765C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_022/ov_SC06_022_jr_80154C24.c b/src/ov_SC06_022/ov_SC06_022_jr_80154C24.c index 3d96481fc..c6f4e944b 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_80154C24.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018F6B4[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E0E30; - -void func_80158BB0(void *arg0) { - if (D_801E0E30 == 0) { - D_801E0E30 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E0E3C; -extern s32 D_8018F688[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E0E3C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018F688[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E0E40; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E0E40 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E0E30; -extern s32 D_801E0E38; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E0E30 == 4) { - D_801E0E30 = 5; - } - if (D_801E0E38 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018F6F0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018F6F0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80154C24", func_801594E8); - - -extern void (*D_8018F904[])(void); - -void func_80159698(void *a0) { - D_8018F904[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018F724)); - func_80028620(1, &(*(u8 *)&D_8018F724) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018F724) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018F9A8[])(void); - -void func_80159968(void *a0) { - D_8018F9A8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018FAFC[])(void); - -void func_80159B70(void *a0) { - D_8018FAFC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018F918; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018F918); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_022/ov_SC06_022_jr_801588CC.c b/src/ov_SC06_022/ov_SC06_022_jr_801588CC.c new file mode 100644 index 000000000..e168e1dba --- /dev/null +++ b/src/ov_SC06_022/ov_SC06_022_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018F850; +extern u8 D_8018F7C0; +extern u8 D_8018F79C; +extern u8 D_8018F778; +extern u8 D_8018F82C; +extern u8 D_8018F808; +extern u8 D_8018F7E4; +extern u8 D_8018F754; +extern void func_80145934(void); +extern u8 D_8018F8E0; +extern u8 D_8018F8BC; +extern u8 D_8018F898; +extern u8 D_8018F874; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018ECD8[]; +extern unsigned char D_8018ED08[]; +extern unsigned char D_8018ED58[]; +extern unsigned char D_8018ED88[]; +extern unsigned char D_8018EDB8[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018EE08[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018EED0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018EF58[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018EF60; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E0DF0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E0DF4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018EF90; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018F038[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018F05C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018F04C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018F070[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018F07C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018F08C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018F0A4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018F094; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018F0B8[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018F0D4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018F0C4; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018F0E8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018F0FC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018F110; +extern void (*D_8018F138[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018F118; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018F144[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018F184[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018F188[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018F37C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018F5EC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018F5FC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E0E28; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018F624[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018F604; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018F614; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018F664[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018F66C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018F638; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018F678[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018F648; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E0E30; +extern s32 D_801E0E3C; +extern s32 D_801E0E40; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018F6B4[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801E0E30; +extern int D_801E0E3C; +extern int D_801E0E40; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018F6B8[])(void); + extern int D_801E0E34; + extern int D_801E0E38; + short sVar1; + + D_8018F6B8[*(unsigned short *)(param_1 + 2)](); + switch (D_801E0E30) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801E0E38 = 0; + D_801E0E34 = 0x46; + D_801E0E30 += 1; + break; + case 2: + if (D_801E0E34 == 0) { + if (SsGetMute() == 0) { + D_801E0E30 += 1; + } + } else { + D_801E0E34 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801E0E30 += 1; + } + break; + case 4: + D_801E0E3C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801E0E34 = 0xd2; + } else { + D_801E0E34 = 1; + } + break; + case 5: + D_801E0E34 -= 1; + if (D_801E0E34 == -1 || D_801E0E40 != 0) { + D_801E0E34 = 0; + D_801E0E30 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801E0E34 = 0x28; + D_801E0E30 += 1; + break; + case 7: + if (D_801E0E34 == 0) { + if (SsGetMute() == 0) { + D_801E0E30 += 1; + } + } else { + D_801E0E34 -= 1; + } + break; + case 8: + D_801E0E38 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801E0E30; + +void func_80158BB0(void *arg0) { + if (D_801E0E30 == 0) { + D_801E0E30 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801E0E3C; +extern s32 D_8018F688[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801E0E3C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018F688[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801E0E40; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801E0E40 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801E0E30; +extern s32 D_801E0E38; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801E0E30 == 4) { + D_801E0E30 = 5; + } + if (D_801E0E38 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018F6F0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018F6F0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_801588CC", func_801594E8); + + +extern void (*D_8018F904[])(void); + +void func_80159698(void *a0) { + D_8018F904[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018F724)); + func_80028620(1, &(*(u8 *)&D_8018F724) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018F724) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018F9A8[])(void); + +void func_80159968(void *a0) { + D_8018F9A8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018FAFC[])(void); + +void func_80159B70(void *a0) { + D_8018FAFC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018F918; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018F918); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_024/ov_SC06_024_jr_80154C24.c b/src/ov_SC06_024/ov_SC06_024_jr_80154C24.c index e3e826233..9b57c3e23 100644 --- a/src/ov_SC06_024/ov_SC06_024_jr_80154C24.c +++ b/src/ov_SC06_024/ov_SC06_024_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80191B8C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801DFFB0; - -void func_80158BB0(void *arg0) { - if (D_801DFFB0 == 0) { - D_801DFFB0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801DFFBC; -extern s32 D_80191B60[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801DFFBC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80191B60[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801DFFC0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801DFFC0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801DFFB0; -extern s32 D_801DFFB8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801DFFB0 == 4) { - D_801DFFB0 = 5; - } - if (D_801DFFB8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80191BC8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80191BC8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80154C24", func_801594E8); - - -extern void (*D_80191DDC[])(void); - -void func_80159698(void *a0) { - D_80191DDC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80191BFC)); - func_80028620(1, &(*(u8 *)&D_80191BFC) + 0x10); - func_80028620(2, &(*(u8 *)&D_80191BFC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80191E80[])(void); - -void func_80159968(void *a0) { - D_80191E80[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80191FD4[])(void); - -void func_80159B70(void *a0) { - D_80191FD4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80191DF0; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80191DF0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_024/ov_SC06_024_jr_801588CC.c b/src/ov_SC06_024/ov_SC06_024_jr_801588CC.c new file mode 100644 index 000000000..6698f6183 --- /dev/null +++ b/src/ov_SC06_024/ov_SC06_024_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80191D28; +extern u8 D_80191C98; +extern u8 D_80191C74; +extern u8 D_80191C50; +extern u8 D_80191D04; +extern u8 D_80191CE0; +extern u8 D_80191CBC; +extern u8 D_80191C2C; +extern void func_80145934(void); +extern u8 D_80191DB8; +extern u8 D_80191D94; +extern u8 D_80191D70; +extern u8 D_80191D4C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801911B0[]; +extern unsigned char D_801911E0[]; +extern unsigned char D_80191230[]; +extern unsigned char D_80191260[]; +extern unsigned char D_80191290[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801912E0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801913A8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80191430[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80191438; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801DFF70; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801DFF74; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80191468; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80191510[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80191534[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80191524; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80191548[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80191554[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80191564[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8019157C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8019156C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80191590[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801915AC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8019159C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801915C0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801915D4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801915E8; +extern void (*D_80191610[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801915F0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8019161C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8019165C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80191660[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80191854[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80191AC4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80191AD4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801DFFA8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80191AFC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80191ADC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80191AEC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80191B3C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80191B44[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80191B10; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80191B50[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80191B20; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801DFFB0; +extern s32 D_801DFFBC; +extern s32 D_801DFFC0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80191B8C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801DFFB0; +extern int D_801DFFBC; +extern int D_801DFFC0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80191B90[])(void); + extern int D_801DFFB4; + extern int D_801DFFB8; + short sVar1; + + D_80191B90[*(unsigned short *)(param_1 + 2)](); + switch (D_801DFFB0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801DFFB8 = 0; + D_801DFFB4 = 0x46; + D_801DFFB0 += 1; + break; + case 2: + if (D_801DFFB4 == 0) { + if (SsGetMute() == 0) { + D_801DFFB0 += 1; + } + } else { + D_801DFFB4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801DFFB0 += 1; + } + break; + case 4: + D_801DFFBC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801DFFB4 = 0xd2; + } else { + D_801DFFB4 = 1; + } + break; + case 5: + D_801DFFB4 -= 1; + if (D_801DFFB4 == -1 || D_801DFFC0 != 0) { + D_801DFFB4 = 0; + D_801DFFB0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801DFFB4 = 0x28; + D_801DFFB0 += 1; + break; + case 7: + if (D_801DFFB4 == 0) { + if (SsGetMute() == 0) { + D_801DFFB0 += 1; + } + } else { + D_801DFFB4 -= 1; + } + break; + case 8: + D_801DFFB8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801DFFB0; + +void func_80158BB0(void *arg0) { + if (D_801DFFB0 == 0) { + D_801DFFB0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801DFFBC; +extern s32 D_80191B60[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801DFFBC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80191B60[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801DFFC0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801DFFC0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801DFFB0; +extern s32 D_801DFFB8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801DFFB0 == 4) { + D_801DFFB0 = 5; + } + if (D_801DFFB8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80191BC8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80191BC8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_801588CC", func_801594E8); + + +extern void (*D_80191DDC[])(void); + +void func_80159698(void *a0) { + D_80191DDC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80191BFC)); + func_80028620(1, &(*(u8 *)&D_80191BFC) + 0x10); + func_80028620(2, &(*(u8 *)&D_80191BFC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80191E80[])(void); + +void func_80159968(void *a0) { + D_80191E80[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80191FD4[])(void); + +void func_80159B70(void *a0) { + D_80191FD4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80191DF0; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80191DF0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_025/ov_SC06_025_jr_80154C24.c b/src/ov_SC06_025/ov_SC06_025_jr_80154C24.c index 59812d7d5..7691ccb68 100644 --- a/src/ov_SC06_025/ov_SC06_025_jr_80154C24.c +++ b/src/ov_SC06_025/ov_SC06_025_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80187030[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B0178; - -void func_80158BB0(void *arg0) { - if (D_801B0178 == 0) { - D_801B0178 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B0184; -extern s32 D_80187004[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B0184; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187004[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B0188; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B0188 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B0178; -extern s32 D_801B0180; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B0178 == 4) { - D_801B0178 = 5; - } - if (D_801B0180 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018706C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018706C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_80154C24", func_801594E8); - - -extern void (*D_80187280[])(void); - -void func_80159698(void *a0) { - D_80187280[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801870A0)); - func_80028620(1, &(*(u8 *)&D_801870A0) + 0x10); - func_80028620(2, &(*(u8 *)&D_801870A0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80187324[])(void); - -void func_80159968(void *a0) { - D_80187324[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80187478[])(void); - -void func_80159B70(void *a0) { - D_80187478[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80187294; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187294); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_025/ov_SC06_025_jr_801588CC.c b/src/ov_SC06_025/ov_SC06_025_jr_801588CC.c new file mode 100644 index 000000000..d948d27dd --- /dev/null +++ b/src/ov_SC06_025/ov_SC06_025_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801871CC; +extern u8 D_8018713C; +extern u8 D_80187118; +extern u8 D_801870F4; +extern u8 D_801871A8; +extern u8 D_80187184; +extern u8 D_80187160; +extern u8 D_801870D0; +extern void func_80145934(void); +extern u8 D_8018725C; +extern u8 D_80187238; +extern u8 D_80187214; +extern u8 D_801871F0; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80186654[]; +extern unsigned char D_80186684[]; +extern unsigned char D_801866D4[]; +extern unsigned char D_80186704[]; +extern unsigned char D_80186734[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80186784[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018684C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801868D4[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801868DC; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B0138; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B013C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018690C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_801869B4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801869D8[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801869C8; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801869EC[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801869F8[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80186A08[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80186A20[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80186A10; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80186A34[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80186A50[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80186A40; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80186A64[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80186A78[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80186A8C; +extern void (*D_80186AB4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80186A94; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80186AC0[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80186B00[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80186B04[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80186CF8[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80186F68[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80186F78[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B0170; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80186FA0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80186F80; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80186F90; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80186FE0[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80186FE8[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80186FB4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80186FF4[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80186FC4; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B0178; +extern s32 D_801B0184; +extern s32 D_801B0188; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80187030[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B0178; +extern int D_801B0184; +extern int D_801B0188; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80187034[])(void); + extern int D_801B017C; + extern int D_801B0180; + short sVar1; + + D_80187034[*(unsigned short *)(param_1 + 2)](); + switch (D_801B0178) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B0180 = 0; + D_801B017C = 0x46; + D_801B0178 += 1; + break; + case 2: + if (D_801B017C == 0) { + if (SsGetMute() == 0) { + D_801B0178 += 1; + } + } else { + D_801B017C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B0178 += 1; + } + break; + case 4: + D_801B0184 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B017C = 0xd2; + } else { + D_801B017C = 1; + } + break; + case 5: + D_801B017C -= 1; + if (D_801B017C == -1 || D_801B0188 != 0) { + D_801B017C = 0; + D_801B0178 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B017C = 0x28; + D_801B0178 += 1; + break; + case 7: + if (D_801B017C == 0) { + if (SsGetMute() == 0) { + D_801B0178 += 1; + } + } else { + D_801B017C -= 1; + } + break; + case 8: + D_801B0180 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B0178; + +void func_80158BB0(void *arg0) { + if (D_801B0178 == 0) { + D_801B0178 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B0184; +extern s32 D_80187004[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B0184; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80187004[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B0188; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B0188 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B0178; +extern s32 D_801B0180; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B0178 == 4) { + D_801B0178 = 5; + } + if (D_801B0180 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018706C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018706C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_801588CC", func_801594E8); + + +extern void (*D_80187280[])(void); + +void func_80159698(void *a0) { + D_80187280[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801870A0)); + func_80028620(1, &(*(u8 *)&D_801870A0) + 0x10); + func_80028620(2, &(*(u8 *)&D_801870A0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80187324[])(void); + +void func_80159968(void *a0) { + D_80187324[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80187478[])(void); + +void func_80159B70(void *a0) { + D_80187478[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80187294; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80187294); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_027/ov_SC06_027_jr_80154C24.c b/src/ov_SC06_027/ov_SC06_027_jr_80154C24.c index 7ddfbd4cc..d8e93bffa 100644 --- a/src/ov_SC06_027/ov_SC06_027_jr_80154C24.c +++ b/src/ov_SC06_027/ov_SC06_027_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180370[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019C150; - -void func_80158BB0(void *arg0) { - if (D_8019C150 == 0) { - D_8019C150 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019C15C; -extern s32 D_80180344[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019C15C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180344[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019C160; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019C160 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019C150; -extern s32 D_8019C158; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019C150 == 4) { - D_8019C150 = 5; - } - if (D_8019C158 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801803AC[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801803AC; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_80154C24", func_801594E8); - - -extern void (*D_801805C0[])(void); - -void func_80159698(void *a0) { - D_801805C0[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801803E0)); - func_80028620(1, &(*(u8 *)&D_801803E0) + 0x10); - func_80028620(2, &(*(u8 *)&D_801803E0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80180664[])(void); - -void func_80159968(void *a0) { - D_80180664[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_801807B8[])(void); - -void func_80159B70(void *a0) { - D_801807B8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801805D4; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801805D4); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_027/ov_SC06_027_jr_801588CC.c b/src/ov_SC06_027/ov_SC06_027_jr_801588CC.c new file mode 100644 index 000000000..d077bb450 --- /dev/null +++ b/src/ov_SC06_027/ov_SC06_027_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018050C; +extern u8 D_8018047C; +extern u8 D_80180458; +extern u8 D_80180434; +extern u8 D_801804E8; +extern u8 D_801804C4; +extern u8 D_801804A0; +extern u8 D_80180410; +extern void func_80145934(void); +extern u8 D_8018059C; +extern u8 D_80180578; +extern u8 D_80180554; +extern u8 D_80180530; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8017F994[]; +extern unsigned char D_8017F9C4[]; +extern unsigned char D_8017FA14[]; +extern unsigned char D_8017FA44[]; +extern unsigned char D_8017FA74[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8017FAC4[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8017FB8C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8017FC14[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8017FC1C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019C110; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019C114; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8017FC4C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8017FCF4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8017FD18[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8017FD08; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8017FD2C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8017FD38[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8017FD48[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8017FD60[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FD50; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8017FD74[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8017FD90[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FD80; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8017FDA4[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8017FDB8[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8017FDCC; +extern void (*D_8017FDF4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017FDD4; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8017FE00[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8017FE40[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8017FE44[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80180038[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801802A8[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_801802B8[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019C148; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801802E0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_801802C0; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801802D0; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80180320[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80180328[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801802F4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80180334[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80180304; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019C150; +extern s32 D_8019C15C; +extern s32 D_8019C160; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180370[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019C150; +extern int D_8019C15C; +extern int D_8019C160; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80180374[])(void); + extern int D_8019C154; + extern int D_8019C158; + short sVar1; + + D_80180374[*(unsigned short *)(param_1 + 2)](); + switch (D_8019C150) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019C158 = 0; + D_8019C154 = 0x46; + D_8019C150 += 1; + break; + case 2: + if (D_8019C154 == 0) { + if (SsGetMute() == 0) { + D_8019C150 += 1; + } + } else { + D_8019C154 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019C150 += 1; + } + break; + case 4: + D_8019C15C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019C154 = 0xd2; + } else { + D_8019C154 = 1; + } + break; + case 5: + D_8019C154 -= 1; + if (D_8019C154 == -1 || D_8019C160 != 0) { + D_8019C154 = 0; + D_8019C150 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019C154 = 0x28; + D_8019C150 += 1; + break; + case 7: + if (D_8019C154 == 0) { + if (SsGetMute() == 0) { + D_8019C150 += 1; + } + } else { + D_8019C154 -= 1; + } + break; + case 8: + D_8019C158 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019C150; + +void func_80158BB0(void *arg0) { + if (D_8019C150 == 0) { + D_8019C150 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019C15C; +extern s32 D_80180344[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019C15C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180344[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019C160; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019C160 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019C150; +extern s32 D_8019C158; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019C150 == 4) { + D_8019C150 = 5; + } + if (D_8019C158 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801803AC[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801803AC; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_801588CC", func_801594E8); + + +extern void (*D_801805C0[])(void); + +void func_80159698(void *a0) { + D_801805C0[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801803E0)); + func_80028620(1, &(*(u8 *)&D_801803E0) + 0x10); + func_80028620(2, &(*(u8 *)&D_801803E0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80180664[])(void); + +void func_80159968(void *a0) { + D_80180664[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_801807B8[])(void); + +void func_80159B70(void *a0) { + D_801807B8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801805D4; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801805D4); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_029/ov_SC06_029_jr_80154C24.c b/src/ov_SC06_029/ov_SC06_029_jr_80154C24.c index 61acd2b4f..60cbe2224 100644 --- a/src/ov_SC06_029/ov_SC06_029_jr_80154C24.c +++ b/src/ov_SC06_029/ov_SC06_029_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018E904[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801DBA70; - -void func_80158BB0(void *arg0) { - if (D_801DBA70 == 0) { - D_801DBA70 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801DBA7C; -extern s32 D_8018E8D8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801DBA7C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018E8D8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801DBA80; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801DBA80 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801DBA70; -extern s32 D_801DBA78; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801DBA70 == 4) { - D_801DBA70 = 5; - } - if (D_801DBA78 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018E940[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018E940; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_80154C24", func_801594E8); - - -extern void (*D_8018EB54[])(void); - -void func_80159698(void *a0) { - D_8018EB54[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018E974)); - func_80028620(1, &(*(u8 *)&D_8018E974) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018E974) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018EBF8[])(void); - -void func_80159968(void *a0) { - D_8018EBF8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018ED4C[])(void); - -void func_80159B70(void *a0) { - D_8018ED4C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018EB68; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018EB68); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_029/ov_SC06_029_jr_801588CC.c b/src/ov_SC06_029/ov_SC06_029_jr_801588CC.c new file mode 100644 index 000000000..13a5b6955 --- /dev/null +++ b/src/ov_SC06_029/ov_SC06_029_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8018EAA0; +extern u8 D_8018EA10; +extern u8 D_8018E9EC; +extern u8 D_8018E9C8; +extern u8 D_8018EA7C; +extern u8 D_8018EA58; +extern u8 D_8018EA34; +extern u8 D_8018E9A4; +extern void func_80145934(void); +extern u8 D_8018EB30; +extern u8 D_8018EB0C; +extern u8 D_8018EAE8; +extern u8 D_8018EAC4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018DF28[]; +extern unsigned char D_8018DF58[]; +extern unsigned char D_8018DFA8[]; +extern unsigned char D_8018DFD8[]; +extern unsigned char D_8018E008[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018E058[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018E120[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018E1A8[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8018E1B0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801DBA30; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801DBA34; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8018E1E0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018E288[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018E2AC[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018E29C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8018E2C0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018E2CC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018E2DC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8018E2F4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018E2E4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018E308[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8018E324[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018E314; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018E338[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8018E34C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8018E360; +extern void (*D_8018E388[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018E368; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8018E394[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8018E3D4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018E3D8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018E5CC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018E83C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018E84C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801DBA68; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018E874[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8018E854; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8018E864; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8018E8B4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8018E8BC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018E888; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018E8C8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018E898; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801DBA70; +extern s32 D_801DBA7C; +extern s32 D_801DBA80; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018E904[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801DBA70; +extern int D_801DBA7C; +extern int D_801DBA80; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018E908[])(void); + extern int D_801DBA74; + extern int D_801DBA78; + short sVar1; + + D_8018E908[*(unsigned short *)(param_1 + 2)](); + switch (D_801DBA70) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801DBA78 = 0; + D_801DBA74 = 0x46; + D_801DBA70 += 1; + break; + case 2: + if (D_801DBA74 == 0) { + if (SsGetMute() == 0) { + D_801DBA70 += 1; + } + } else { + D_801DBA74 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801DBA70 += 1; + } + break; + case 4: + D_801DBA7C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801DBA74 = 0xd2; + } else { + D_801DBA74 = 1; + } + break; + case 5: + D_801DBA74 -= 1; + if (D_801DBA74 == -1 || D_801DBA80 != 0) { + D_801DBA74 = 0; + D_801DBA70 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801DBA74 = 0x28; + D_801DBA70 += 1; + break; + case 7: + if (D_801DBA74 == 0) { + if (SsGetMute() == 0) { + D_801DBA70 += 1; + } + } else { + D_801DBA74 -= 1; + } + break; + case 8: + D_801DBA78 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801DBA70; + +void func_80158BB0(void *arg0) { + if (D_801DBA70 == 0) { + D_801DBA70 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801DBA7C; +extern s32 D_8018E8D8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801DBA7C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018E8D8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801DBA80; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801DBA80 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801DBA70; +extern s32 D_801DBA78; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801DBA70 == 4) { + D_801DBA70 = 5; + } + if (D_801DBA78 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018E940[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018E940; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_801588CC", func_801594E8); + + +extern void (*D_8018EB54[])(void); + +void func_80159698(void *a0) { + D_8018EB54[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018E974)); + func_80028620(1, &(*(u8 *)&D_8018E974) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018E974) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8018EBF8[])(void); + +void func_80159968(void *a0) { + D_8018EBF8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018ED4C[])(void); + +void func_80159B70(void *a0) { + D_8018ED4C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8018EB68; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018EB68); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_030/ov_SC06_030_jr_80154C24.c b/src/ov_SC06_030/ov_SC06_030_jr_80154C24.c index 48e685809..4701b3d2c 100644 --- a/src/ov_SC06_030/ov_SC06_030_jr_80154C24.c +++ b/src/ov_SC06_030/ov_SC06_030_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801841F4[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801B8CD0; - -void func_80158BB0(void *arg0) { - if (D_801B8CD0 == 0) { - D_801B8CD0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801B8CDC; -extern s32 D_801841C8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801B8CDC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801841C8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801B8CE0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801B8CE0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801B8CD0; -extern s32 D_801B8CD8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801B8CD0 == 4) { - D_801B8CD0 = 5; - } - if (D_801B8CD8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184230[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184230; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_80154C24", func_801594E8); - - -extern void (*D_80184444[])(void); - -void func_80159698(void *a0) { - D_80184444[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80184264)); - func_80028620(1, &(*(u8 *)&D_80184264) + 0x10); - func_80028620(2, &(*(u8 *)&D_80184264) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801844E8[])(void); - -void func_80159968(void *a0) { - D_801844E8[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018463C[])(void); - -void func_80159B70(void *a0) { - D_8018463C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80184458; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184458); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_030/ov_SC06_030_jr_801588CC.c b/src/ov_SC06_030/ov_SC06_030_jr_801588CC.c new file mode 100644 index 000000000..5da67578d --- /dev/null +++ b/src/ov_SC06_030/ov_SC06_030_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80184390; +extern u8 D_80184300; +extern u8 D_801842DC; +extern u8 D_801842B8; +extern u8 D_8018436C; +extern u8 D_80184348; +extern u8 D_80184324; +extern u8 D_80184294; +extern void func_80145934(void); +extern u8 D_80184420; +extern u8 D_801843FC; +extern u8 D_801843D8; +extern u8 D_801843B4; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80183818[]; +extern unsigned char D_80183848[]; +extern unsigned char D_80183898[]; +extern unsigned char D_801838C8[]; +extern unsigned char D_801838F8[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80183948[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80183A10[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80183A98[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80183AA0; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801B8C90; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801B8C94; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80183AD0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80183B78[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80183B9C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80183B8C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80183BB0[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80183BBC[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80183BCC[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80183BE4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183BD4; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80183BF8[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80183C14[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183C04; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80183C28[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80183C3C[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80183C50; +extern void (*D_80183C78[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183C58; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80183C84[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80183CC4[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80183CC8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80183EBC[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8018412C[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8018413C[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801B8CC8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184164[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80184144; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80184154; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801841A4[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801841AC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184178; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801841B8[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80184188; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801B8CD0; +extern s32 D_801B8CDC; +extern s32 D_801B8CE0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801841F4[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801B8CD0; +extern int D_801B8CDC; +extern int D_801B8CE0; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801841F8[])(void); + extern int D_801B8CD4; + extern int D_801B8CD8; + short sVar1; + + D_801841F8[*(unsigned short *)(param_1 + 2)](); + switch (D_801B8CD0) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801B8CD8 = 0; + D_801B8CD4 = 0x46; + D_801B8CD0 += 1; + break; + case 2: + if (D_801B8CD4 == 0) { + if (SsGetMute() == 0) { + D_801B8CD0 += 1; + } + } else { + D_801B8CD4 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801B8CD0 += 1; + } + break; + case 4: + D_801B8CDC = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801B8CD4 = 0xd2; + } else { + D_801B8CD4 = 1; + } + break; + case 5: + D_801B8CD4 -= 1; + if (D_801B8CD4 == -1 || D_801B8CE0 != 0) { + D_801B8CD4 = 0; + D_801B8CD0 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801B8CD4 = 0x28; + D_801B8CD0 += 1; + break; + case 7: + if (D_801B8CD4 == 0) { + if (SsGetMute() == 0) { + D_801B8CD0 += 1; + } + } else { + D_801B8CD4 -= 1; + } + break; + case 8: + D_801B8CD8 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801B8CD0; + +void func_80158BB0(void *arg0) { + if (D_801B8CD0 == 0) { + D_801B8CD0 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801B8CDC; +extern s32 D_801841C8[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801B8CDC; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801841C8[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801B8CE0; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801B8CE0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801B8CD0; +extern s32 D_801B8CD8; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801B8CD0 == 4) { + D_801B8CD0 = 5; + } + if (D_801B8CD8 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184230[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184230; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_801588CC", func_801594E8); + + +extern void (*D_80184444[])(void); + +void func_80159698(void *a0) { + D_80184444[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80184264)); + func_80028620(1, &(*(u8 *)&D_80184264) + 0x10); + func_80028620(2, &(*(u8 *)&D_80184264) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801844E8[])(void); + +void func_80159968(void *a0) { + D_801844E8[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8018463C[])(void); + +void func_80159B70(void *a0) { + D_8018463C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80184458; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184458); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_032/ov_SC06_032_jr_80154C24.c b/src/ov_SC06_032/ov_SC06_032_jr_80154C24.c index f36bc6df8..f523ddbab 100644 --- a/src/ov_SC06_032/ov_SC06_032_jr_80154C24.c +++ b/src/ov_SC06_032/ov_SC06_032_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801956C0[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801CF380; - -void func_80158BB0(void *arg0) { - if (D_801CF380 == 0) { - D_801CF380 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801CF38C; -extern s32 D_80195694[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801CF38C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80195694[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801CF390; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801CF390 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801CF380; -extern s32 D_801CF388; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801CF380 == 4) { - D_801CF380 = 5; - } - if (D_801CF388 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_801956FC[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_801956FC; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80154C24", func_801594E8); - - -extern void (*D_80195910[])(void); - -void func_80159698(void *a0) { - D_80195910[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80195730)); - func_80028620(1, &(*(u8 *)&D_80195730) + 0x10); - func_80028620(2, &(*(u8 *)&D_80195730) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_801959B4[])(void); - -void func_80159968(void *a0) { - D_801959B4[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80195B08[])(void); - -void func_80159B70(void *a0) { - D_80195B08[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80195924; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80195924); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_032/ov_SC06_032_jr_801588CC.c b/src/ov_SC06_032/ov_SC06_032_jr_801588CC.c new file mode 100644 index 000000000..716d297b7 --- /dev/null +++ b/src/ov_SC06_032/ov_SC06_032_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8019585C; +extern u8 D_801957CC; +extern u8 D_801957A8; +extern u8 D_80195784; +extern u8 D_80195838; +extern u8 D_80195814; +extern u8 D_801957F0; +extern u8 D_80195760; +extern void func_80145934(void); +extern u8 D_801958EC; +extern u8 D_801958C8; +extern u8 D_801958A4; +extern u8 D_80195880; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80194CE4[]; +extern unsigned char D_80194D14[]; +extern unsigned char D_80194D64[]; +extern unsigned char D_80194D94[]; +extern unsigned char D_80194DC4[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80194E14[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80194EDC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80194F64[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80194F6C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801CF340; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801CF344; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80194F9C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80195044[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80195068[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80195058; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8019507C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80195088[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80195098[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801950B0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801950A0; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801950C4[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801950E0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801950D0; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801950F4[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80195108[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8019511C; +extern void (*D_80195144[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80195124; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80195150[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80195190[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80195194[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80195388[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_801955F8[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80195608[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801CF378; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80195630[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80195610; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80195620; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80195670[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80195678[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80195644; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80195684[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80195654; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801CF380; +extern s32 D_801CF38C; +extern s32 D_801CF390; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801956C0[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801CF380; +extern int D_801CF38C; +extern int D_801CF390; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801956C4[])(void); + extern int D_801CF384; + extern int D_801CF388; + short sVar1; + + D_801956C4[*(unsigned short *)(param_1 + 2)](); + switch (D_801CF380) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801CF388 = 0; + D_801CF384 = 0x46; + D_801CF380 += 1; + break; + case 2: + if (D_801CF384 == 0) { + if (SsGetMute() == 0) { + D_801CF380 += 1; + } + } else { + D_801CF384 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801CF380 += 1; + } + break; + case 4: + D_801CF38C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801CF384 = 0xd2; + } else { + D_801CF384 = 1; + } + break; + case 5: + D_801CF384 -= 1; + if (D_801CF384 == -1 || D_801CF390 != 0) { + D_801CF384 = 0; + D_801CF380 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801CF384 = 0x28; + D_801CF380 += 1; + break; + case 7: + if (D_801CF384 == 0) { + if (SsGetMute() == 0) { + D_801CF380 += 1; + } + } else { + D_801CF384 -= 1; + } + break; + case 8: + D_801CF388 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801CF380; + +void func_80158BB0(void *arg0) { + if (D_801CF380 == 0) { + D_801CF380 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801CF38C; +extern s32 D_80195694[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801CF38C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80195694[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801CF390; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801CF390 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801CF380; +extern s32 D_801CF388; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801CF380 == 4) { + D_801CF380 = 5; + } + if (D_801CF388 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_801956FC[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_801956FC; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_801588CC", func_801594E8); + + +extern void (*D_80195910[])(void); + +void func_80159698(void *a0) { + D_80195910[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80195730)); + func_80028620(1, &(*(u8 *)&D_80195730) + 0x10); + func_80028620(2, &(*(u8 *)&D_80195730) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_801959B4[])(void); + +void func_80159968(void *a0) { + D_801959B4[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80195B08[])(void); + +void func_80159B70(void *a0) { + D_80195B08[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80195924; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80195924); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC06_033/ov_SC06_033_jr_80154C24.c b/src/ov_SC06_033/ov_SC06_033_jr_80154C24.c index 6d24fba76..28401382b 100644 --- a/src/ov_SC06_033/ov_SC06_033_jr_80154C24.c +++ b/src/ov_SC06_033/ov_SC06_033_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80193BD0[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801CF440; - -void func_80158BB0(void *arg0) { - if (D_801CF440 == 0) { - D_801CF440 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801CF44C; -extern s32 D_80193BA4[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801CF44C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80193BA4[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801CF450; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801CF450 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801CF440; -extern s32 D_801CF448; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801CF440 == 4) { - D_801CF440 = 5; - } - if (D_801CF448 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80193C0C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80193C0C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_80154C24", func_801594E8); - - -extern void (*D_80193E20[])(void); - -void func_80159698(void *a0) { - D_80193E20[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80193C40)); - func_80028620(1, &(*(u8 *)&D_80193C40) + 0x10); - func_80028620(2, &(*(u8 *)&D_80193C40) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80193EC4[])(void); - -void func_80159968(void *a0) { - D_80193EC4[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80194018[])(void); - -void func_80159B70(void *a0) { - D_80194018[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80193E34; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80193E34); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC06_033/ov_SC06_033_jr_801588CC.c b/src/ov_SC06_033/ov_SC06_033_jr_801588CC.c new file mode 100644 index 000000000..04f85615a --- /dev/null +++ b/src/ov_SC06_033/ov_SC06_033_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80193D6C; +extern u8 D_80193CDC; +extern u8 D_80193CB8; +extern u8 D_80193C94; +extern u8 D_80193D48; +extern u8 D_80193D24; +extern u8 D_80193D00; +extern u8 D_80193C70; +extern void func_80145934(void); +extern u8 D_80193DFC; +extern u8 D_80193DD8; +extern u8 D_80193DB4; +extern u8 D_80193D90; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801931F4[]; +extern unsigned char D_80193224[]; +extern unsigned char D_80193274[]; +extern unsigned char D_801932A4[]; +extern unsigned char D_801932D4[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_80193324[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801933EC[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80193474[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8019347C; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801CF400; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801CF404; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801934AC; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80193554[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80193578[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80193568; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8019358C[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80193598[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801935A8[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801935C0[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801935B0; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801935D4[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801935F0[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801935E0; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_80193604[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80193618[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8019362C; +extern void (*D_80193654[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80193634; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80193660[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801936A0[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801936A4[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80193898[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80193B08[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80193B18[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801CF438; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80193B40[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80193B20; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80193B30; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80193B80[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80193B88[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80193B54; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80193B94[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80193B64; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801CF440; +extern s32 D_801CF44C; +extern s32 D_801CF450; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80193BD0[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801CF440; +extern int D_801CF44C; +extern int D_801CF450; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80193BD4[])(void); + extern int D_801CF444; + extern int D_801CF448; + short sVar1; + + D_80193BD4[*(unsigned short *)(param_1 + 2)](); + switch (D_801CF440) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801CF448 = 0; + D_801CF444 = 0x46; + D_801CF440 += 1; + break; + case 2: + if (D_801CF444 == 0) { + if (SsGetMute() == 0) { + D_801CF440 += 1; + } + } else { + D_801CF444 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801CF440 += 1; + } + break; + case 4: + D_801CF44C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801CF444 = 0xd2; + } else { + D_801CF444 = 1; + } + break; + case 5: + D_801CF444 -= 1; + if (D_801CF444 == -1 || D_801CF450 != 0) { + D_801CF444 = 0; + D_801CF440 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801CF444 = 0x28; + D_801CF440 += 1; + break; + case 7: + if (D_801CF444 == 0) { + if (SsGetMute() == 0) { + D_801CF440 += 1; + } + } else { + D_801CF444 -= 1; + } + break; + case 8: + D_801CF448 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801CF440; + +void func_80158BB0(void *arg0) { + if (D_801CF440 == 0) { + D_801CF440 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801CF44C; +extern s32 D_80193BA4[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801CF44C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80193BA4[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801CF450; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801CF450 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801CF440; +extern s32 D_801CF448; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801CF440 == 4) { + D_801CF440 = 5; + } + if (D_801CF448 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80193C0C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80193C0C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_801588CC", func_801594E8); + + +extern void (*D_80193E20[])(void); + +void func_80159698(void *a0) { + D_80193E20[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80193C40)); + func_80028620(1, &(*(u8 *)&D_80193C40) + 0x10); + func_80028620(2, &(*(u8 *)&D_80193C40) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80193EC4[])(void); + +void func_80159968(void *a0) { + D_80193EC4[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80194018[])(void); + +void func_80159B70(void *a0) { + D_80194018[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80193E34; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80193E34); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC07_000/ov_SC07_000_jr_80154C24.c b/src/ov_SC07_000/ov_SC07_000_jr_80154C24.c index 67979dad9..35e1935c0 100644 --- a/src/ov_SC07_000/ov_SC07_000_jr_80154C24.c +++ b/src/ov_SC07_000/ov_SC07_000_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80184A18[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801CE988; - -void func_80158BB0(void *arg0) { - if (D_801CE988 == 0) { - D_801CE988 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801CE994; -extern s32 D_801849EC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801CE994; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801849EC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801CE998; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801CE998 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801CE988; -extern s32 D_801CE990; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801CE988 == 4) { - D_801CE988 = 5; - } - if (D_801CE990 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80184A54[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80184A54; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_80154C24", func_801594E8); - - -extern void (*D_80184C68[])(void); - -void func_80159698(void *a0) { - D_80184C68[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80184A88)); - func_80028620(1, &(*(u8 *)&D_80184A88) + 0x10); - func_80028620(2, &(*(u8 *)&D_80184A88) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80184D0C[])(void); - -void func_80159968(void *a0) { - D_80184D0C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80184E60[])(void); - -void func_80159B70(void *a0) { - D_80184E60[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80184C7C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184C7C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC07_000/ov_SC07_000_jr_801588CC.c b/src/ov_SC07_000/ov_SC07_000_jr_801588CC.c new file mode 100644 index 000000000..84d5d89d1 --- /dev/null +++ b/src/ov_SC07_000/ov_SC07_000_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80184BB4; +extern u8 D_80184B24; +extern u8 D_80184B00; +extern u8 D_80184ADC; +extern u8 D_80184B90; +extern u8 D_80184B6C; +extern u8 D_80184B48; +extern u8 D_80184AB8; +extern void func_80145934(void); +extern u8 D_80184C44; +extern u8 D_80184C20; +extern u8 D_80184BFC; +extern u8 D_80184BD8; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8018403C[]; +extern unsigned char D_8018406C[]; +extern unsigned char D_801840BC[]; +extern unsigned char D_801840EC[]; +extern unsigned char D_8018411C[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018416C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80184234[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_801842BC[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_801842C4; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801CE948; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801CE94C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801842F4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018439C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_801843C0[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_801843B0; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_801843D4[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_801843E0[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801843F0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80184408[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801843F8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8018441C[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_80184438[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80184428; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8018444C[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80184460[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80184474; +extern void (*D_8018449C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018447C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_801844A8[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_801844E8[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_801844EC[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_801846E0[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80184950[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80184960[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801CE980; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184988[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80184968; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80184978; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801849C8[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801849D0[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018499C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_801849DC[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801849AC; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801CE988; +extern s32 D_801CE994; +extern s32 D_801CE998; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80184A18[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801CE988; +extern int D_801CE994; +extern int D_801CE998; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80184A1C[])(void); + extern int D_801CE98C; + extern int D_801CE990; + short sVar1; + + D_80184A1C[*(unsigned short *)(param_1 + 2)](); + switch (D_801CE988) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801CE990 = 0; + D_801CE98C = 0x46; + D_801CE988 += 1; + break; + case 2: + if (D_801CE98C == 0) { + if (SsGetMute() == 0) { + D_801CE988 += 1; + } + } else { + D_801CE98C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801CE988 += 1; + } + break; + case 4: + D_801CE994 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801CE98C = 0xd2; + } else { + D_801CE98C = 1; + } + break; + case 5: + D_801CE98C -= 1; + if (D_801CE98C == -1 || D_801CE998 != 0) { + D_801CE98C = 0; + D_801CE988 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801CE98C = 0x28; + D_801CE988 += 1; + break; + case 7: + if (D_801CE98C == 0) { + if (SsGetMute() == 0) { + D_801CE988 += 1; + } + } else { + D_801CE98C -= 1; + } + break; + case 8: + D_801CE990 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801CE988; + +void func_80158BB0(void *arg0) { + if (D_801CE988 == 0) { + D_801CE988 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801CE994; +extern s32 D_801849EC[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801CE994; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801849EC[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801CE998; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801CE998 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801CE988; +extern s32 D_801CE990; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801CE988 == 4) { + D_801CE988 = 5; + } + if (D_801CE990 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80184A54[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80184A54; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_801588CC", func_801594E8); + + +extern void (*D_80184C68[])(void); + +void func_80159698(void *a0) { + D_80184C68[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80184A88)); + func_80028620(1, &(*(u8 *)&D_80184A88) + 0x10); + func_80028620(2, &(*(u8 *)&D_80184A88) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80184D0C[])(void); + +void func_80159968(void *a0) { + D_80184D0C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80184E60[])(void); + +void func_80159B70(void *a0) { + D_80184E60[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80184C7C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80184C7C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC07_001/ov_SC07_001_jr_80154C24.c b/src/ov_SC07_001/ov_SC07_001_jr_80154C24.c index 1a2db71cf..bdfe4cdf0 100644 --- a/src/ov_SC07_001/ov_SC07_001_jr_80154C24.c +++ b/src/ov_SC07_001/ov_SC07_001_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801838C8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A9A38; - -void func_80158BB0(void *arg0) { - if (D_801A9A38 == 0) { - D_801A9A38 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A9A44; -extern s32 D_8018389C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A9A44; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018389C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A9A48; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A9A48 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A9A38; -extern s32 D_801A9A40; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A9A38 == 4) { - D_801A9A38 = 5; - } - if (D_801A9A40 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80183904[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80183904; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_80154C24", func_801594E8); - - -extern void (*D_80183B18[])(void); - -void func_80159698(void *a0) { - D_80183B18[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80183938)); - func_80028620(1, &(*(u8 *)&D_80183938) + 0x10); - func_80028620(2, &(*(u8 *)&D_80183938) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80183BBC[])(void); - -void func_80159968(void *a0) { - D_80183BBC[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80183D10[])(void); - -void func_80159B70(void *a0) { - D_80183D10[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80183B2C; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80183B2C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC07_001/ov_SC07_001_jr_801588CC.c b/src/ov_SC07_001/ov_SC07_001_jr_801588CC.c new file mode 100644 index 000000000..ac0ddf1b5 --- /dev/null +++ b/src/ov_SC07_001/ov_SC07_001_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80183A64; +extern u8 D_801839D4; +extern u8 D_801839B0; +extern u8 D_8018398C; +extern u8 D_80183A40; +extern u8 D_80183A1C; +extern u8 D_801839F8; +extern u8 D_80183968; +extern void func_80145934(void); +extern u8 D_80183AF4; +extern u8 D_80183AD0; +extern u8 D_80183AAC; +extern u8 D_80183A88; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_80182EEC[]; +extern unsigned char D_80182F1C[]; +extern unsigned char D_80182F6C[]; +extern unsigned char D_80182F9C[]; +extern unsigned char D_80182FCC[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8018301C[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801830E4[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8018316C[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80183174; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A99F8; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A99FC; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_801831A4; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8018324C[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80183270[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80183260; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80183284[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80183290[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_801832A0[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_801832B8[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_801832A8; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_801832CC[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801832E8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801832D8; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801832FC[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_80183310[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_80183324; +extern void (*D_8018334C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018332C; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80183358[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80183398[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8018339C[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_80183590[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80183800[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80183810[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A9A30; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80183838[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80183818; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80183828; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80183878[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80183880[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018384C; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8018388C[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8018385C; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A9A38; +extern s32 D_801A9A44; +extern s32 D_801A9A48; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801838C8[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A9A38; +extern int D_801A9A44; +extern int D_801A9A48; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801838CC[])(void); + extern int D_801A9A3C; + extern int D_801A9A40; + short sVar1; + + D_801838CC[*(unsigned short *)(param_1 + 2)](); + switch (D_801A9A38) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A9A40 = 0; + D_801A9A3C = 0x46; + D_801A9A38 += 1; + break; + case 2: + if (D_801A9A3C == 0) { + if (SsGetMute() == 0) { + D_801A9A38 += 1; + } + } else { + D_801A9A3C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A9A38 += 1; + } + break; + case 4: + D_801A9A44 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A9A3C = 0xd2; + } else { + D_801A9A3C = 1; + } + break; + case 5: + D_801A9A3C -= 1; + if (D_801A9A3C == -1 || D_801A9A48 != 0) { + D_801A9A3C = 0; + D_801A9A38 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A9A3C = 0x28; + D_801A9A38 += 1; + break; + case 7: + if (D_801A9A3C == 0) { + if (SsGetMute() == 0) { + D_801A9A38 += 1; + } + } else { + D_801A9A3C -= 1; + } + break; + case 8: + D_801A9A40 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A9A38; + +void func_80158BB0(void *arg0) { + if (D_801A9A38 == 0) { + D_801A9A38 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A9A44; +extern s32 D_8018389C[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A9A44; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018389C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A9A48; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A9A48 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A9A38; +extern s32 D_801A9A40; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A9A38 == 4) { + D_801A9A38 = 5; + } + if (D_801A9A40 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80183904[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80183904; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_801588CC", func_801594E8); + + +extern void (*D_80183B18[])(void); + +void func_80159698(void *a0) { + D_80183B18[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80183938)); + func_80028620(1, &(*(u8 *)&D_80183938) + 0x10); + func_80028620(2, &(*(u8 *)&D_80183938) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80183BBC[])(void); + +void func_80159968(void *a0) { + D_80183BBC[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80183D10[])(void); + +void func_80159B70(void *a0) { + D_80183D10[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80183B2C; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80183B2C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC07_002/ov_SC07_002_jr_80154C24.c b/src/ov_SC07_002/ov_SC07_002_jr_80154C24.c index 3a3fc81df..a44235a1b 100644 --- a/src/ov_SC07_002/ov_SC07_002_jr_80154C24.c +++ b/src/ov_SC07_002/ov_SC07_002_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80188B84[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_8019A588; - -void func_80158BB0(void *arg0) { - if (D_8019A588 == 0) { - D_8019A588 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019A594; -extern s32 D_80188B58[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019A594; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188B58[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_8019A598; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8019A598 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_8019A588; -extern s32 D_8019A590; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_8019A588 == 4) { - D_8019A588 = 5; - } - if (D_8019A590 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_80188BC0[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_80188BC0; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_80154C24", func_801594E8); - - -extern void (*D_80188DD4[])(void); - -void func_80159698(void *a0) { - D_80188DD4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80188BF4)); - func_80028620(1, &(*(u8 *)&D_80188BF4) + 0x10); - func_80028620(2, &(*(u8 *)&D_80188BF4) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80188E78[])(void); - -void func_80159968(void *a0) { - D_80188E78[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80188FCC[])(void); - -void func_80159B70(void *a0) { - D_80188FCC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_80188DE8; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188DE8); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC07_002/ov_SC07_002_jr_801588CC.c b/src/ov_SC07_002/ov_SC07_002_jr_801588CC.c new file mode 100644 index 000000000..1db6cbc56 --- /dev/null +++ b/src/ov_SC07_002/ov_SC07_002_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80188D20; +extern u8 D_80188C90; +extern u8 D_80188C6C; +extern u8 D_80188C48; +extern u8 D_80188CFC; +extern u8 D_80188CD8; +extern u8 D_80188CB4; +extern u8 D_80188C24; +extern void func_80145934(void); +extern u8 D_80188DB0; +extern u8 D_80188D8C; +extern u8 D_80188D68; +extern u8 D_80188D44; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801881A8[]; +extern unsigned char D_801881D8[]; +extern unsigned char D_80188228[]; +extern unsigned char D_80188258[]; +extern unsigned char D_80188288[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801882D8[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_801883A0[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80188428[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80188430; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_8019A548; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_8019A54C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80188460; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80188508[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8018852C[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8018851C; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80188540[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8018854C[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8018855C[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_80188574[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80188564; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80188588[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_801885A4[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80188594; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801885B8[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801885CC[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801885E0; +extern void (*D_80188608[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801885E8; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_80188614[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_80188654[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80188658[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8018884C[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80188ABC[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80188ACC[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_8019A580; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80188AF4[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80188AD4; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80188AE4; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80188B34[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80188B3C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80188B08; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80188B48[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80188B18; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_8019A588; +extern s32 D_8019A594; +extern s32 D_8019A598; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188B84[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_8019A588; +extern int D_8019A594; +extern int D_8019A598; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80188B88[])(void); + extern int D_8019A58C; + extern int D_8019A590; + short sVar1; + + D_80188B88[*(unsigned short *)(param_1 + 2)](); + switch (D_8019A588) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8019A590 = 0; + D_8019A58C = 0x46; + D_8019A588 += 1; + break; + case 2: + if (D_8019A58C == 0) { + if (SsGetMute() == 0) { + D_8019A588 += 1; + } + } else { + D_8019A58C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8019A588 += 1; + } + break; + case 4: + D_8019A594 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8019A58C = 0xd2; + } else { + D_8019A58C = 1; + } + break; + case 5: + D_8019A58C -= 1; + if (D_8019A58C == -1 || D_8019A598 != 0) { + D_8019A58C = 0; + D_8019A588 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8019A58C = 0x28; + D_8019A588 += 1; + break; + case 7: + if (D_8019A58C == 0) { + if (SsGetMute() == 0) { + D_8019A588 += 1; + } + } else { + D_8019A58C -= 1; + } + break; + case 8: + D_8019A590 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_8019A588; + +void func_80158BB0(void *arg0) { + if (D_8019A588 == 0) { + D_8019A588 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019A594; +extern s32 D_80188B58[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019A594; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80188B58[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_8019A598; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8019A598 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_8019A588; +extern s32 D_8019A590; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_8019A588 == 4) { + D_8019A588 = 5; + } + if (D_8019A590 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_80188BC0[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_80188BC0; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_801588CC", func_801594E8); + + +extern void (*D_80188DD4[])(void); + +void func_80159698(void *a0) { + D_80188DD4[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80188BF4)); + func_80028620(1, &(*(u8 *)&D_80188BF4) + 0x10); + func_80028620(2, &(*(u8 *)&D_80188BF4) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80188E78[])(void); + +void func_80159968(void *a0) { + D_80188E78[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80188FCC[])(void); + +void func_80159B70(void *a0) { + D_80188FCC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_80188DE8; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80188DE8); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC07_006/ov_SC07_006_jr_80154C24.c b/src/ov_SC07_006/ov_SC07_006_jr_80154C24.c index 47cf55ef2..15b21fa49 100644 --- a/src/ov_SC07_006/ov_SC07_006_jr_80154C24.c +++ b/src/ov_SC07_006/ov_SC07_006_jr_80154C24.c @@ -2518,646 +2518,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018C7A8[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158ab4 (src/shared) */ - - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158ae4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); - -void func_80158BB0(void *arg0) { - - extern M2C_UNK D_800D58D8; - extern s32 D_801F4F30; - if (D_801F4F30 == 0) { - D_801F4F30 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158c40 (src/shared) */ - - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158cd8 (src/shared) */ - - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158d60 (src/shared) */ - - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158e24 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - - extern s32 D_801F4F3C; - extern s32 D_8018C77C[]; - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801F4F3C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018C77C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - - extern s32 D_801F4F40; - extern u8 D_80110C3C[]; - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801F4F40 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592cc (src/shared) */ - - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); - -void func_8015934C(void *arg0) { - - extern u8 D_800AE6BD; - extern s32 D_801F4F30; - extern s32 D_801F4F38; - void *temp_v1; - - if (D_801F4F30 == 4) { - D_801F4F30 = 5; - } - if (D_801F4F38 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593e4 (src/shared) */ - - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - - -s32 func_80159464(void) { - - extern Entry D_8018C7E4[]; - Entry *e; - - e = D_8018C7E4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80154C24", func_801594E8); - - - -void func_80159698(void *a0) { - - extern void (*D_8018C9F8[])(void); - D_8018C9F8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596d4 (src/shared) */ - - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018C818)); - func_80028620(1, &(*(u8 *)&D_8018C818) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018C818) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987c (src/shared) */ - - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598bc (src/shared) */ - - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598e0 (src/shared) */ - - - - -void func_80159968(void *a0) { - - extern void (*D_8018CA9C[])(void); - D_8018CA9C[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599e0 (src/shared) */ - - -void func_80159A18(void) { -} - -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159b08 (src/shared) */ - - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159b3c (src/shared) */ - - - - -void func_80159B70(void *a0) { - - extern void (*D_8018CBF0[])(void); - D_8018CBF0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159bac (src/shared) */ - - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - - -void func_80159BE4(s32 arg0) -{ - - extern unsigned char D_8018CA0C; - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018CA0C); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - - -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80154C24", func_80159C84); - -DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015a1c8 (src/shared) */ - - -DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */ - - -DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */ - - - - -void func_8015A264(void *a0) { - - extern void (*D_8018CBF8[])(void); - D_8018CBF8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay - - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_801553A8(s32 *a0); -extern s32 func_80172608(u8 *a0); -extern void func_80146CA0(void *a0); - -void func_8015A2D8(s32 param_1) -{ - - extern int D_8018CA1C; - unsigned char bVar1; - - ((void (*)(int, int *))func_80146DB8)(param_1, &D_8018CA1C); - if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) { - func_80154150(param_1, 10); - func_80154A74(param_1, 0x1c); - *(int *)(param_1 + 0x2c) = 0xfffc0000; - goto LAB_8015a38c; - } - bVar1 = *(unsigned char *)(param_1 + 0xa9); - switch (bVar1) { - case 0x41: - func_80154150(param_1, 7); - break; - case 0x53: - case 0x73: - func_80154150(param_1, 6); - break; - default: - *(int *)(param_1 + 0x23c) = 0; - goto LAB_8015a390; - } - func_80154A74(param_1, 0x21); -LAB_8015a38c: - *(int *)(param_1 + 0x23c) = 0; -LAB_8015a390: - func_8014C010(param_1, 2); - ((void (*)(int))func_801553A8)(param_1); - ((void (*)(int))func_80172608)(param_1); - ((void (*)(int))func_80146CA0)(param_1); - return; -} - - -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80154C24", func_8015A3C8); - -DEFINE_func_8015AB7C() /* dedup: shared engine-core @0x8015ab7c (src/shared) */ - - -DEFINE_func_8015ABD4() /* dedup: shared engine-core @0x8015abd4 (src/shared) */ - - - -// @class: plumbing -// @stuck: none — MATCH (param held in $s0 across 3 calls; lhu 0x16E; &D_8018CA3C arg) -extern void func_80154150(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80161CD0(s32 a0, s32 a1); - -void func_8015AC48(s32 arg0) -{ - - extern M2C_UNK D_8018CA3C; - func_80154150(arg0, 9); - func_80146DB8((s32 *)arg0, &D_8018CA3C); - func_80161CD0(arg0, M2C_FIELD(arg0, u16 *, 0x16E)); -} - - -DEFINE_func_8015AC90() /* dedup: shared engine-core @0x8015ac90 (src/shared) */ - - -DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015acc4 (src/shared) */ - - -DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015ad08 (src/shared) */ - - - - -void func_8015AD3C(void *a0) { - - extern void (*D_8018CC00[])(void); - D_8018CC00[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015ad78 (src/shared) */ - - -DEFINE_func_8015ADB0() /* dedup: shared engine-core @0x8015adb0 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80154C24", func_8015AE2C); - -DEFINE_func_8015B6F4() /* dedup: shared engine-core @0x8015b6f4 (src/shared) */ - - -DEFINE_func_8015B7B4() /* dedup: shared engine-core @0x8015b7b4 (src/shared) */ - - -DEFINE_func_8015B858() /* dedup: shared engine-core @0x8015b858 (src/shared) */ - - -DEFINE_func_8015B8F8() /* dedup: shared engine-core @0x8015b8f8 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80154C24", func_8015B950); - -DEFINE_func_8015BD8C() /* dedup: shared engine-core @0x8015bd8c (src/shared) */ - - -DEFINE_func_8015BDD0() /* dedup: shared engine-core @0x8015bdd0 (src/shared) */ - - -DEFINE_func_8015BE04() /* dedup: shared engine-core @0x8015be04 (src/shared) */ - - - - -void func_8015BE38(struct Obj *a0) { - - extern void (*D_8018CC1C[])(void); - D_8018CC1C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015BE74() /* dedup: shared engine-core @0x8015be74 (src/shared) */ - - -DEFINE_func_8015BE94() /* dedup: shared engine-core @0x8015be94 (src/shared) */ - - -DEFINE_func_8015BEC4() /* dedup: shared engine-core @0x8015bec4 (src/shared) */ - - -DEFINE_func_8015BEE4() /* dedup: shared engine-core @0x8015bee4 (src/shared) */ - - -DEFINE_func_8015BF04() /* dedup: shared engine-core @0x8015bf04 (src/shared) */ - - -DEFINE_func_8015BF48() /* dedup: shared engine-core @0x8015bf48 (src/shared) */ - - -DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015bf7c (src/shared) */ - - -DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015bfb0 (src/shared) */ - - - - -void func_8015BFF4(void *a0) { - - extern void (*D_8018CC28[])(void); - D_8018CC28[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_80154C24", func_8015C030); - -DEFINE_func_8015C08C() /* dedup: shared engine-core @0x8015c08c (src/shared) */ - - -DEFINE_func_8015C0C4() /* dedup: shared engine-core @0x8015c0c4 (src/shared) */ - - -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147324(s32 a0); -extern void func_801473EC(s32 *a0); -extern void func_80147A84(s32 arg0); -extern int func_80148AFC(void *a0); -extern s32 func_80149FB0(s32 a0); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_8014CC28(s32 a0); -extern void func_8014D738(void); -extern void func_8014F3E8(s32 a0); -extern s32 func_8015BE94(); -extern void func_8015C0C4(s32 a0); - - - -s32 func_8015C128(s32 param_1) { - - extern u16 D_800B99DA; - extern void func_8015C6E0(int); - extern void (*D_8018CAA8[])(int); - - int sp10[3]; - int sp20[3]; - int temp_s0; - int temp_v0; - - ((void(*)())func_80149FB0)(); - if (((int(*)(int))func_80148AFC)(((int)param_1)) & 0xFF) { - sp10[0] = 0; - sp10[1] = 0; - sp10[2] = -0x4000; - ((void(*)(int, int *, int *))func_8001382C)(*(short *)(*(int *)(((int)param_1) + 0x20) + 0x12), sp10, sp20); - *(int *)(((int)param_1) + 0x234) += sp20[0]; - *(int *)(((int)param_1) + 0x238) += sp20[1]; - *(int *)(((int)param_1) + 0x23C) += sp20[2]; - } - ((void(*)(int, int *, int *))func_8001382C)((short)(-*(unsigned short *)(*(int *)(((int)param_1) + 0x20) + 0x12)), - (int *)(((int)param_1) + 0x234), sp20); - ((void(*)(int, int *))func_80146DB8)(((int)param_1), sp20); - func_80147A84(((int)param_1)); - ((void(*)(int))func_801473EC)(((int)param_1)); - if (!(D_800B99DA & 3)) { - ((void(*)(int, int))func_8014C010)(((int)param_1), 1); - ((void(*)(int))func_80147324)(0x65F); - } - if (((int(*)(int))func_8014D738)(((int)param_1)) != 0) { - D_8018CAA8[*(u16 *)((int)param_1)](((int)param_1)); - func_8015C6E0(((int)param_1)); - return; - } - temp_s0 = ((int(*)(int))func_8014CC28)(((int)param_1)); - temp_v0 = ((int(*)(int))func_8014F3E8)(((int)param_1)); - if (temp_v0 != 0) { - if ((temp_v0 & 0xFF00) != 0x4000) { - ((void(*)(int, int))func_80146E90)(((int)param_1), 6); - ((void(*)(int))func_80146CA0)(((int)param_1)); - return; - } - if ((temp_v0 & 0x4000) && ((int(*)(int))func_80146E98)(((int)param_1)) != 0) { - ((void(*)(int, int))func_80147078)(((int)param_1), 4); - ((void(*)(int))func_8015C0C4)(((int)param_1)); - } - } else if (temp_s0 == 0) { - D_8018CAA8[*(u16 *)((int)param_1)](((int)param_1)); - ((void(*)(int, int))func_80147078)(((int)param_1), 3); - ((void(*)(int))func_8015BE94)(((int)param_1)); - } -} - diff --git a/src/ov_SC07_006/ov_SC07_006_jr_801588CC.c b/src/ov_SC07_006/ov_SC07_006_jr_801588CC.c new file mode 100644 index 000000000..593b48076 --- /dev/null +++ b/src/ov_SC07_006/ov_SC07_006_jr_801588CC.c @@ -0,0 +1,2659 @@ +#include "common.h" +#include "../shared/engine_core.h" + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +typedef struct { s32 w[8]; } Vec8; +typedef struct { s32 m[3][3]; s32 t[3]; } MATRIX; +typedef struct { s32 vx, vy, vz; } VECTOR; +typedef struct { s16 h[8]; } Buf; +typedef struct { char _b[8]; } M8; /* size 8, alignment 1 -> unaligned copy */ +typedef struct { u16 f0, f2, f4; s16 f6; } Box_80133784; +typedef struct { s16 x, y, z; } Vec3s; +typedef struct { s32 f0; } E4; +typedef struct { u16 f0; s16 f2; } Prim4; +typedef struct { s16 x; s16 y; } Hw4; +typedef struct { s32 f0; u32 *f4; s32 f8; s32 fC; s32 f10; } Rec20; +typedef struct { u8 d[0x60]; } Blk60; +extern void func_80128288(void); +extern void func_80128158(void); +extern void func_801285E4(void); +extern void func_80128178(void); +extern void func_80128678(void); +extern void func_80128198(void); +extern void func_80128714(void); +extern void func_801281B8(void); +extern void func_8013E67C(void); +extern void func_801281D8(void); +extern void func_8013E558(void); +extern void func_801281F8(void); +extern s32 func_80128218(void); +extern void func_80128A28(void); +extern void func_80128228(void); +extern void func_80128AF4(void); +extern void func_80128248(void); +extern void func_801282EC(void); +extern void func_80128268(void); +extern void func_80011B7C(int); +extern void func_801282CC(void); +extern void func_8001C0C8(void); +extern void func_80015310(void); +extern void func_80129258(void); +extern void func_801378F0(void); +extern void func_80010E14(void); +extern s16 currentLocationId; +extern s32 func_80029504(void); +extern s32 func_800CF854(s32); +extern s32 func_80128998(void); +extern s32 func_801289F0(void); +extern s32 func_801288E8(s32); +extern s32 func_80128940(s32); +extern s32 func_80029178(s32); +extern s32 func_801288B0(void); +extern void func_80011C10(void); +extern void func_8012832C(void); +extern void func_80129220(void); +extern void func_80011E24(void); +extern void func_80128C14(void); +extern void func_8002AEF8(void); +extern void func_800CFBBC(void); +extern void SsUtReverbOff(void); +extern void func_8013C98C(void); +extern void func_80129C40(s32 a0); +extern void func_800D0630(void); +extern void func_80145CEC(void); +extern void func_80144B9C(void); +extern u8 D_800B9A17; +extern u8 D_800B9A10; +extern void func_80128420(void); +extern s32 func_800D0588(void); +extern void func_801284B8(void); +extern void func_80175308(void); +extern void func_8016E8F0(void); +extern void func_80175494(void); +extern u8 D_800B9A64; +extern void func_801284F0(void); +extern void func_80146074(void); +extern void func_8012853C(void); +extern void func_80178608(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern s32 func_80011A3C(void); +extern short currentLocationId; +extern short D_800B99F2; +extern void func_80128564(void); +extern u8 D_800B9A11; +extern void func_801285D4(void); +extern s32 func_800D18DC(void); +extern void func_8014607C(void); +extern void func_801287B8(void); +extern void func_80029444(void); +extern void func_800D1754(void); +extern void func_8014ED28(s32 _arg0); +extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); +extern int func_801288E8(int arg0); +extern int func_80128940(int arg0); +extern void func_80010AE0(s32 a0); +extern void func_80018450(s32 a0, s32 a1); +extern void func_800183E0(s32 a0); +extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); +extern s32 func_80128DB4(s32 a0, s32 *a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(s32 param_1, s32 *param_2); +extern void func_80128FAC(u16 *arg0); +extern s16 D_8011DB2C; +extern s16 D_8011DB30; +extern s32 D_80126AEC; +extern void func_80129010(void); +extern u8 *func_8012913C(s32 a0); +extern u8 * func_801290DC(s32 a0, u8 *a1); +extern void func_8001D074(s32 a, s32 b); +extern u8 *func_801291C0(void); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 * func_8012913C(s32 arg0); +extern void func_80016714(void *a0, s32 a1); +extern u8 * func_801291C0(void); +extern void func_80129248(s16 a0); +extern void func_801292C8(u8 *a0); +extern void func_8012927C(void); +extern void func_8012931C(struct vec *a0); +extern void func_80129350(s32 a0, s32 a1); +extern void func_80129374(s32 a0, s32 a1); +extern s16 D_800B9AAC[]; +extern s16 D_800B9AAE[]; +extern s16 D_800B9AB0[]; +extern s16 D_800B9AB2[]; +extern s16 D_800B9AB4[]; +extern s16 D_800B9AB6[]; +extern s16 D_800B9AB8[]; +extern s16 D_800B9ABA[]; +extern void func_80129398(void); +extern s16 D_80114EE0; +extern void func_80129428(void); +extern void func_8012943C(void); +extern s32 D_8005128C; +extern u8 D_800B9A78; +extern void func_801298F4(void *arg0); +extern void func_801299C8(s32 a, s32 b, s32 c); +extern void func_8012944C(void); +extern unsigned short D_800B99F0; +extern struct BigCopy D_80126DB8; +extern u8 D_80126948[]; +extern struct BigCopy D_80114EE8; +extern s32 D_80126E60[]; +extern s8 D_801150D6; +extern s8 D_801152C0; +extern u8 D_80127504; +extern void func_800144D4(void); +extern void func_80129C40(s32 _arg0); +extern void func_8012A328(void); +extern void func_80053308(s32); +extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ +extern void GsSetRefView2L(void *); +extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ +extern s32 D_80126F04[]; +extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ +extern s32 D_80126FA8[]; +extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ +extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ +extern s32 D_800AE688[]; +extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ +extern void func_80129CF8(void); +extern void func_8012A018(s32 a, s32 b); +extern void func_80129FF4(void); +extern void func_8012A048(void *a0, s32 a1, u8 a2); +extern void func_8012A018(s32 a0, s32 a1); +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_80126940; +extern s16 D_80126942; +extern s16 D_80126944; +extern void *memcpy(void *, const void *, unsigned int); +extern void func_8012A094(s32 a0); +extern void func_8012A100(s8 a0); +extern void func_8012A0E0(void); +extern s32 D_80120204; +extern s32 D_80120200; +extern s32 D_8012020C; +extern s32 D_80120208; +extern s16 D_80120218; +extern s16 D_80120210; +extern s16 D_8012021A; +extern s16 D_80120212; +extern s16 D_8012021C; +extern s16 D_80120214; +extern s16 D_80120226; +extern s16 D_80120220; +extern s16 D_80120228; +extern s16 D_80120222; +extern s16 D_8012022A; +extern s16 D_80120224; +extern s32 D_80120294; +extern s16 D_80120298; +extern s16 D_8012029A; +extern void func_8012A110(void); +extern void func_8012A2F4(void); +extern s16 D_80127080; +extern s16 D_801152C2; +extern void func_8012A304(s32 a0, s32 a1); +extern void func_8012A464(void); +extern s32 D_801151D4; +extern void func_8012A4BC(void); +extern void func_8012A598(void *a0); +extern void func_8012A568(void (*a0)(void)); +extern void func_8012A62C(s32); +extern void func_8012A5F8(void (*a0)(void), s32 a1); +extern void func_8012A62C(s32 a0); +extern void func_8012A7D4(void *a0, void *a1); +extern s32 func_8012A6D0(void *a0, void *a1); +extern s16 func_8012A68C(void); +extern s32 func_80047D3C(s32 a0); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 func_8012A6D0(void* a0, void* a1); +extern s16 func_8012A79C(s16 *a0, s16 *a1); +extern s16 func_8012A758(void); +extern void func_8012A7D4(void *arg0, void *arg1); +extern void func_8012AAAC(void); +extern void func_8012A828(s32 a0, void * a1); +extern int func_8012ACE0(void *a0); +extern void func_8012A860(void *a0, int a1); +extern void func_8012A8B0(u8 *a0, s32 a1); +extern void func_8012A8E8(void); +extern u8 D_801202A0[]; +extern u16 D_801270C0; +extern void func_8012A988(u8 *a0); +extern void func_8012A908(void); +extern s32 func_8012ACE0(void *a0); +extern void func_8012ACA0(void *arg0); +extern void func_8012AD44(s32 *a0, s16 a1); +extern s32 func_8012AD50(void * arg0); +extern void func_8012AD64(s32 *a0, s16 a1); +extern void func_8012AD6C(void *a0); +extern void func_8012AD80(s32 a0); +extern void func_8012ADE4(u8 *a0); +extern s32 *D_80126B78; +extern s32 *D_80126B90; +extern s32 D_80126B58; +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80013478(s32 a0, s32 a1); +extern s32 func_8012AE00(s32 a0); +extern s32 func_8012AF0C(s32 a0, s32 a1); +extern s32 func_80134510(s32 arg); +extern s32 func_8012B030(u8 *a0); +extern int func_80047948(int a0); +extern int func_8004787C(int a0); +extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8012B178(s32 a0, s32 a1); +extern void func_8012B1B4(s32 a0, s32 a1); +extern void func_8012B200(u8 *a0); +extern void func_8012B21C(void *a0); +extern void func_8012B23C(s32 a0); +extern void func_8012B260(u8 *a0); +extern void func_80049CAC(s32 a0, s32 a1); +extern void func_8012B2CC(s32 a0); +extern void RotMatrixYXZ(void *m, void *p); +extern void func_8012B370(int a0); +extern void func_8004978C(s16 *a0, void *a1); +extern void func_8012B414(int a0); +extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); +extern s32 func_8012B6D4(s16 *a0, s16 *a1); +extern s32 func_8012B70C(s16 *a0, s16 *a1); +extern s32 ratan2(s32 x, s32 y); +extern s32 func_8012B744(void *a0, void *a1); +extern s16 D_80126CB8; +extern s16 D_80126CB4; +extern s32 func_8012B864(s32 a0); +extern s32 func_8012B8A4(s16 *a0); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern s32 func_8012BA10(s32 arg0, s32 arg1); +extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); +extern void Square0(s32 *a0, s32 *a1); +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern s16 D_80126CBA; +extern s32 func_8012BCCC(s32 a0); +extern void func_80013350(s32 a0, void *a1); +extern u8 D_80126B5C; +extern void func_8012BD14(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); +extern void func_8012BE98(s32 a0, u16 *a1); +extern void func_8012BE54(s32 a0); +extern s32 func_800132BC(s32 a0, s32 a1); +extern void func_8012BE98(s32 arg0, u16 * arg1); +extern s32 func_8012BEE8(s32 a0); +extern s32 func_8012BF10(s32 a0, s32 a1); +extern void func_8012BF4C(s32 *a0, s32 a1); +extern void func_8012BF54(void *a0); +extern void func_8012BF68(void *a0); +extern s16 D_80126CB0; +extern s32 func_8012BF7C(s16 *a0); +extern s16 D_80126CAC; +extern short D_80126CAE; +extern int func_8012BFA8(short *a0); +extern s32 D_801274D4; +extern s32 D_801274E0; +extern s32 func_8012C044(s32 a0); +extern void func_8012C218(void *a0); +extern void func_8012C098(void *param_1); +extern s32 func_8012C0EC(s32 a0); +extern void func_8012C194(void); +extern void func_8001CFDC(s32 a, s32 b); +extern void func_8012C1B8(void); +extern u8 D_800B3DF0[]; +extern s32 func_8012C1DC(s32 a0); +extern u8 D_80126720[]; +extern u16 * func_8012C284(u16 *a0); +extern u8 D_80120194[]; +extern s32 func_8012C2D0(void); +extern s32 func_8012C31C(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern u8 D_80078EAE; +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8001C810(s32 a0, s32 a1); +extern s32 func_8012C438(s32 a0, s32 a1); +extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); +extern s32 func_8012C51C(void *a0, s32 a1); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_8012C724(s32 a0, s32 a1); +extern s32 func_8012C750(s32 a0); +extern s32 func_8012C820(u8 *a0); +extern u16 D_801274E4[]; +extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +extern void func_8012CC88(s32 a, s32 b, s32 c); +extern u8 D_800D3918[]; +extern void func_8012CBA4(s32 a0); +extern void func_8012CBCC(s32 a0); +extern void func_8012CBF4(s32 a0); +extern void func_8012CC1C(s32 arg0, s32 arg1); +extern void func_8012CC40(s32 arg0, s32 arg1); +extern void func_8012CC88(s32 a0, s32 a1, s32 a2); +extern void func_8012CC64(s32 a0, s32 a1); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern s32 func_8012CE2C(s32 a0); +extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); +extern void func_8012CFA8(s32 arg0); +extern void func_8012F214(s32 a0, s32 a1, s32 a2); +extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012D098(u16 *param_1, u32 param_2); +extern void func_8012D098(); +extern void func_8012D38C(int a0); +extern void func_8012D3AC(void); +extern s32 AddPrim(s32, void *); +extern s32 RotTransPers(s32, s32, s32 *, s32 *); +extern void SetLineF2(void *); +extern void *func_80010A08(s32); +extern void func_8004914C(void *); +extern void func_800491AC(void *); +extern s32 D_800A651C; +extern u8 D_800AF648; +extern s16 D_800B9A02; +extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8012D5DC(void); +extern s16 D_80126B98; +extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern int func_8012D664(); +extern void func_8012D624(s32 a0); +extern s32 func_8012D714(s32 param_1, u32 param_2); +extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); +extern void func_8014C978(void); +extern s32 func_8012DB84(void); +extern s32 func_8012DE2C(s32 a0); +extern s32 func_8012DDA4(void); +extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); +extern s16 D_80126B9A; +extern u8 D_801152A8[]; +extern void func_8012DFBC(void); +extern void func_8012DFCC(void); +extern void func_8012E014(void); +extern void func_8012E138(void); +extern void func_8012DFD4(u8 *a0); +extern s32 func_8012E27C(void); +extern void func_8012E284(void); +extern s32 GetTPage(s32, s32, s32, s32); +extern s32 func_8005A600(s32, s32, s32, s32, s32); +extern void func_8012E28C(s32 arg0, s32 arg1); +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern void func_8012E32C(void); +extern s32 func_8012E470(s32 a0); +extern void func_8012E4C8(s32 a0); +extern s32 func_8012E504(s32 a0, s32 a1); +extern s32 func_8012E544(s32 a0); +extern s32 func_8012E57C(s32 a0, s32 a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); +extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); +extern s32 func_8012E778(int param_1, int param_2); +extern void func_8012E88C(u8 *a0); +extern void func_8012E8A8(u8 *a0); +extern void func_8012E8C4(u8 *a0); +extern void func_8012E8E0(s32 a0, s32 a1); +extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); +extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); +extern s32 func_8002A4FC(s32 a0); +extern s32 func_8012EECC(s32 a0); +extern void func_8012EFB8(s32 a0); +extern void func_8012EF34(s32 a0, s32 a1); +extern void func_8012EF70(s32 a0, s32 a1); +extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); +extern void func_8012F038(int param_1, short *param_2, short *param_3); +extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); +extern void RotTransSV(s32 a0, s32 a1, void *a2); +extern void func_8012F14C(s32 a0, s32 a1, s32 a2); +extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); +extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); +extern s16 D_80126CB6; +extern void func_8012F374(s32 a0, s32 a1); +extern void *memcpy(void *, const void *, u32); +extern u8 D_80126C38; +extern u8 D_80126C40; +extern u16 D_80126B94; +extern u16 D_80126B96; +extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); +extern void func_80131B14(); +extern void func_80131E00(struct S80131E00 *a0, s32 a1); +extern s32 func_80131A34(s32, s32); +extern void func_80131CA8(int a0, int a1); +extern void func_8012F5F4(s32 arg0); +extern void func_80131C78(s32 a0); +extern void func_8012F68C(s32 arg0); +extern void func_8012F75C(s32 a0); +extern s32 func_8012BEE8(s32); +extern void func_8012F7B4(s32 a0); +extern void func_80131170(); +extern void func_80131CA8(); +extern void func_8012F828(int param_1); +extern void func_80131340(s32 a0); +extern void func_8012F87C(s32 a0); +extern void func_8012F8C8(int param_1); +extern void func_8012F91C(s32 a0); +extern s32 func_80131A34(s32 a0, s32 a1); +extern void func_80131CA8(s32 a0, s32 a1); +extern void func_8012F968(s32 param_1); +extern void func_801319E0(s32 a0); +extern s32 func_80143B6C(s32 a0, s32 a1); +extern void func_8012FB54(s32 a0); +extern void func_8012FC30(s32 a0); +extern void func_8012FCA4(int a0); +extern void func_80131B14(void); +extern void func_8012FCC4(int param_1); +extern void func_8012FDA8(int param_1); +extern void func_80131170(s32 a0, s32 a1, s32 a2); +extern void func_8012FE70(s32 a0); +extern void func_8012FF00(s32 a0); +extern void func_8012FF4C(s32 a0); +extern void func_80130D48(s32 a0); +extern void func_8012FF98(u8 *a0); +extern s32 func_80131AC8(void *a0); +extern void func_8013001C(void *a0); +extern void func_80130088(void *a0); +extern s32 func_8012BCCC(s32); +extern void func_801300F4(s32 a0); +extern void func_801301E8(u8 *a0); +extern void func_80130278(s32 arg0); +extern void func_80130314(s32 a0); +extern void func_80130360(s32 a0); +extern void func_8012E364(void); +extern void func_801303A0(s32 a0); +extern void func_801303EC(void *a0); +extern void func_80143CD4(s32 a0); +extern void func_800CB0E8(s32 a0); +extern void func_80130438(s32 a0); +extern void func_801319E0(int); +extern int func_80131D68(int, int); +extern int func_8012BEE8(int); +extern void func_80131CA8(int, int); +extern void func_80130514(int param_1); +extern void func_801305CC(u8 *a0); +extern void func_8012CBF4(s32); +extern s32 func_80131D68(s32 a0, s32 a1); +extern void func_80130650(s32 a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_80130740(void *a0, u16 *a1); +extern s32 func_801312D0(s32 a0, void *a1); +extern void func_801307B0(s32 a0); +extern void func_80130858(s32 a0); +extern void func_80130898(u8 *a0); +extern void func_801308DC(s32 a0); +extern void func_80166244(); +extern void func_80130974(int param_1); +extern void func_80130A18(u8 *a0); +extern void func_80130AC4(s32 a0); +extern int func_80131A34(int a0, int a1); +extern void func_80130AF0(int param_1); +extern void func_80130D0C(s32 a0); +extern void func_80131170(s32 p, s32 b, s32 c); +extern s32 func_801312D0(s32 param_1, void *param_2); +extern void func_80131E00(); +extern s32 D_801F4D80; +extern s32 D_801F4D84; +extern void func_8002A04C(s32 a0); +extern void func_801319E0(s32 arg0); +extern s32 func_80131CF4(s32 a0); +extern int func_80131D68(int a0, int a1); +extern void func_80131E38(u8 *a0); +extern void func_80131E7C(s32 a0); +extern void func_80131EE4(void); +extern void func_80131EEC(void *a0); +extern void func_80131F28(void *a0); +extern void func_80131F64(void *a0); +extern void func_80131FA0(void *a0); +extern void func_80131FDC(void *a0); +extern void func_801320D0(void); +extern void func_8001C214(int, int); +extern void func_801320D8(int param_1); +extern void func_80132144(int param_1); +extern void func_801321B0(int param_1); +extern void func_8013221C(int param_1); +extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ +extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); +extern void func_80132288(int *param_1, int *param_2, int param_3); +extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_8013240C(s32 a0); +extern void func_8013277C(void); +extern void func_80020F34(s32 a0, s32 a1); +extern void func_80054514(s32 a0, s32 a1); +extern void func_80132784(s32 a0, s32 a1, u32 a2); +extern s32 VectorNormalSS(void *a0, void *a1); +extern void func_80132DC4(s32 a0, s32 a1, s32 a2); +extern s32 func_80132E6C(s16 *a0); +extern void func_80132EC4(void *a0, s16 a1); +extern s32 func_80132EF4(s32 a0, s32 a1); +extern void func_801330E0(s16 *a0, s16 *a1, s32 a2); +extern void func_80133060(u8 *a0, s32 *a1, s32 a2); +extern void func_8013339C(short *param_1, short *param_2); +extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); +extern void func_80136BC4(s32 a0); +extern void func_801336E8(void *a0, int a1, int a2); +extern void func_80136BC4(s32); +extern void func_8013373C(s16 arg0); +extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); +extern s32 func_80133CD4(); +extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); +extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); +extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); +extern s32 func_801345F8(s32 arg); +extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); +extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); +extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); +extern int func_80134A74(int, s16, s16, int); +extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); +extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); +extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); +extern s32 func_801365B8(void *arg0, s32 arg1, s32 arg2); +extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80136C3C(void); +extern void func_80136C1C(void); +extern void func_80136C44(void); +extern void func_80136C4C(void); +extern void func_80136C54(void); +extern void func_80136D00(void); +extern void SetLineG2(void *); +extern void func_80136D08(s32 arg0, s32 arg1); +extern u16 D_80126CC4; +extern M2C_UNK func_800153CC(M2C_UNK, u16, M2C_UNK, M2C_UNK, s32, s32); +extern void func_80136DFC(void); +extern void func_80136EC4(void); +extern short D_800B9A02; +extern u8 D_800A6518[]; +extern void GsSortLine(void *a0, void *a1, s32 a2); +extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); +extern void func_80137030(s16 a0, s16 a1); +extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); +extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); +extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); +extern void func_80137178(s32 x, s32 y); +extern u8 D_800AF630[]; +extern u16 aD800B9A02 __asm__("D_800B9A02"); +extern void func_801372B0(void); +extern void func_80137614(s32 a0, s32 a1, s32 a2); +extern void func_801375EC(s32 a0, s16 a1); +extern s32 func_801399A8(void); +extern void func_801377B4(s32 a0, s32 a1, s32 a2); +extern s32 func_8013767C(s32 a0); +extern void func_801376E8(int a0, int a1); +extern void func_801376C8(int a0); +extern s32 D_80127524; +extern s32 D_80127528; +extern void func_80137840(s32 a0); +extern void func_80139634(void *); +extern void func_80139DC8(void); +extern s16 D_8012752E; +extern void func_801379D8(void); +extern void func_801379EC(void); +extern void func_80138BE0(s32 a0); +extern void func_80137BD8(s32 a0); +extern void func_8013A380(void); +extern void func_801379FC(void); +extern void func_80138BE0(int p); +extern void func_80137B80(void); +extern void func_801392FC(); +extern void func_801397B0(s32 a0); +extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); +extern void func_80139680(s32 a0, u8 *a1); +extern u16 D_800B99D8; +extern int func_80137D08(int arg0, int arg1, short arg2); +extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80137DD4(s32 ent, u8 *arg, u8 *work); +extern void func_801387B8(s32 arg0); +extern void func_80138948(void *a0); +extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); +extern void func_80138B88(s32 a0); +extern void func_8013895C(s32 a0); +extern s16 D_80127540[4]; +extern s32 func_80139D04(s32 a0, s32 a1); +extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); +extern void func_80139B18(s32 a0); +extern void func_80138AB4(s32 a0); +extern void func_80138C30(void *a0); +extern void func_8013A9F8(s32 a0, s32 a1); +extern void func_80138D58(s32 a0, u16 a1); +extern s32 func_80014E80(s32 a0, s32 a1); +extern s32 func_8013914C(s32 a0, s32 a1); +extern void func_800599B8(u16 *); +extern u16 D_80127C0C[]; +extern s32 D_80127548[]; +extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); +extern s32 func_80139220(s32 a0); +extern void func_801391F0(void *a0); +extern void func_801392C8(void *a0); +extern void func_801395D4(void *); +extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80052460(s32 a0, s32 a1, s32 a2); +extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); +extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); +extern void func_80139634(void *a0); +extern void func_80139680(s32 arg0, u8 * arg1); +extern void func_8001931C(void); +extern s16 D_8012752C; +extern void func_80139788(void); +extern void GsSortSprite(void *a0, u8 *a1, s32 a2); +extern void func_801397B0(s32 arg0); +extern void func_8013A8B0(s32 *a0); +extern void func_80139914(s32 arg0); +extern u16 D_80126A08; +extern s16 D_801269F4; +extern s32 D_801269F0; +extern s32 *D_80126A30; +extern void func_80139954(void); +extern s32 D_80126A3C; +extern s32 func_801399F0(s32 a0); +extern s32 D_80127520; +extern void func_80139A34(s32 a0); +extern s32 D_80127530[4]; +extern void func_80139A44(s32 a0, u16 a1); +extern void func_80139A68(s32 a0, u16 a1); +extern void func_80139A8C(s32 a0); +extern void func_80139C7C(u8 *a0); +extern s16 D_8012811A; +extern void func_80139DEC(void); +extern void func_80139DF4(s32 a0); +extern void func_80139E84(s32 a0); +extern void func_80139F0C(s32 a0); +extern void func_80139FBC(struct obj *a0); +extern s32 func_8001B22C(void *a0); +extern void func_80139FE8(void *a0); +extern void func_8013A0A4(struct S8013A0A4 *a0); +extern void func_8013A164(struct S8013A164 *a0); +extern void func_8013A1E8(s32 a0); +extern void func_8013A250(struct S8013A250 *a0); +extern void func_8013A2BC(s32 a0); +extern void func_8013A378(void); +extern u8 D_8011DA80[]; +extern void func_8013A530(); +extern void func_8013A448(void *a0); +extern void func_8013A4C4(struct S8013A4C4 *a0); +extern void func_80015D4C(); +extern void func_80015F04(); +extern void func_8013AA24(s32 a0, s32 a1); +extern void func_8013A530(int param_1); +extern void func_8013A860(void); +extern s32 func_8013A8BC(void); +extern void func_8013A9B4(s32 a0, s32 a1); +extern s32 func_8013A8FC(s32 arg0); +extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); +extern void func_8013B204(s32 a0, s32 a1); +extern void func_8013AF20(); +extern void func_8013B274(s32 a0, s32 a1, void *a2); +extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); +extern void func_8013CA14(void); +extern void func_8013CABC(void); +extern void func_8013CAE8(void); +extern void func_8013CB20(void); +extern void func_8013CB5C(void); +extern void func_8013CF68(); +extern void func_8013D9B0(); +extern void func_8013D064(void); +extern s32 func_8013D13C(void); +extern void func_8013D164(void); +extern void func_8013D178(void); +extern void func_8013D330(void); +extern void func_8013D53C(void); +extern void func_8013DD68(void); +extern void func_8013D8FC(void); +extern void func_8013CF68(void); +extern void func_8013D3D4(int param_1, int param_2); +extern void func_8013DBE4(int param_1); +extern s32 func_8013E054(void); +extern int SquareRoot12(int a0); +extern int func_8013E064(s16 *a0, s16 *a1); +extern int func_8013E0FC(s16 *a0, s16 *a1); +extern int func_8013E194(s16 *a0, s16 *a1); +extern void Square12(s32 *a0, s32 *a1); +extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); +extern s32 func_8013E298(s16 *a0); +extern int func_8013E2C4(short *a0); +extern void *D_801274CC; +extern s32 func_8013E410(void); +extern s32 func_8013E448(s32 a0); +extern void func_8013E370(void); +extern s32 (*D_801274D0)(s32); +extern s32 D_801274D8; +extern s32 D_801274DC; +extern s32 func_8013E448(s32 param_1); +extern void func_800D24A0(s32 a0); +extern void func_80141788(void); +extern void *D_8011DB24; +extern s32 func_800D0EC4(void); +extern void func_80141874(void); +extern u8 D_800B9A15; +extern unsigned char D_800B9A13; +extern u16 D_80115110; +extern unsigned short D_80115112; +extern void func_8013E588(void * _arg0); +extern void func_801754A8(void); +extern s32 func_80014ED4(s32); +extern s32 func_80015018(s32); +extern void func_800190AC(void); +extern void func_80141C04(void); +extern void func_8013E5E8(void); +extern void func_8013E83C(void); +extern void func_8013E6AC(void); +extern void func_800D24A0(s32 arg); +extern void func_8013E814(void); +extern void func_8013E83C(); +extern void func_8013E958(); +extern s32 func_80141C50(void); +extern void func_8013F244(void); +extern void func_8013FAF8(s16 a0, s16 a1); +extern void func_8013E958(void); +extern u8 D_801151C8[]; +extern s32 D_801151D0; +extern u16 D_8011511A; +extern u16 D_8011511E; +extern s32 D_80115130; +extern s16 D_8011514C; +extern void func_8013EA54(void); +extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ +extern s16 func_8014168C(s16 a0); +extern s32 func_8014032C(s32 a0, s32 a1); +extern unsigned char *func_80141CA4(void); +extern void func_8013EB7C(void); +extern s32 func_8013F350(void); /* §30#2 widened (discarding caller) */ +extern u16 D_80115112; +extern void func_8013ED6C(void); +extern s32 func_8013EE10(); +extern void func_8013F138(void); +extern void func_800D2624(void); +extern unsigned short D_80115114; +extern unsigned short D_80115118; +extern void func_8013F1BC(void); +extern void func_80141C0C(s32); +extern u16 D_8011511C; +extern u16 D_80115120; +extern u16 D_80115122; +extern s16 D_80115128; +extern s16 D_8011512A; +extern u16 D_8011512E; +extern u8 D_80115140[]; +extern s16 D_8011514E; +extern u8 D_80115152; +extern u8 D_80115158[]; /* macro-canonical (§8e) */ +extern u8 D_8011515C; /* macro-canonical (§8e) */ +extern u8 D_8018B4A8[]; +extern u8 D_8018B4C0[]; +extern u16 D_8018B3C4[]; +extern s32 func_80029178(s32 arg); +extern s32 func_800291B4(s32 arg); +extern void func_8014AA04(s32 a0); +extern void func_801415C0(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); +extern s32 func_80140608(s32 a0); +extern void func_801407F4(void); +extern s32 func_801416D4(s16); /* macro-canonical (§8e) */ +extern s32 func_8013F350(void); +extern void func_80140E6C(void); +extern void func_80140F00(void); +extern s32 *func_80140958(s32 *, s32, s32); +extern int func_80141100(int); +extern s16 func_8014168C(s16); +extern s32 func_8013FFD8(s16, s32, s32 *); +extern void func_80024054(void *a0, void *a1); +extern s32 *func_800D2650(s32 *, void *, s32, s32, s32, s32); +extern s32 func_800D27DC(s32, s32 *, void *, s32, s32); +extern s32 *func_800D29F8(s32, s32, void *, s32, s32); +extern void func_8013FAF8(s16 arg0, s16 arg1); +extern s32 func_80028D58(void); +extern s32 func_80028DE0(void); +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern int func_800D2CA8(int, int); +extern void func_800D2D10(int, int, void *, int); +extern int func_80029FE4(void); +extern char *func_8002AAB4(void); +extern char *strcpy(char *, const char *); +extern int func_8002A26C(void); +extern int func_8002A2B0(void); +extern int func_8002A4B8(void); +extern int func_8002A998(void); +extern int func_8002A9DC(void); +extern int func_8002A728(void); +extern int func_8002A76C(void); +extern int func_80029FD4(void); +extern s32 func_8002A1B4(void); +extern short func_8002A28C(void); +extern short func_8002A27C(void); +extern s32 func_8002A400(void); +extern short func_8002A4D8(void); +extern short func_8002A4C8(void); +extern s32 func_8002A8E0(void); +extern short func_8002A9B8(void); +extern short func_8002A9A8(void); +extern s32 func_8002A670(void); +extern short func_8002A748(void); +extern short func_8002A738(void); +extern int func_801412A8(int, int, int, int, int, int); +extern int func_80141100(int param_1); +extern void func_800291A0(s32, s32); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_801415C0(s32 param_1, s32 param_2); +extern u8 D_80115148[]; +extern u8 D_80115149[]; +extern u8 D_80115158[]; +extern u8 D_8011514D; +extern u8 D_8011515C; +extern s32 func_800D11F0(s32 a0); +extern s32 func_800D1658(s32 a0); +extern s32 func_801416D4(s16 param_1); +extern void func_8001903C(void); +extern void func_801417C4(void); +extern u8 D_800B9A16; +extern u16 D_80115114; +extern void func_801417F8(void); +extern volatile u16 D_8011511A; +extern u16 D_8011512E; /* §17a-1: canonical width (jr_8013F350 TUs decl u16); byte-neutral here (only use is store-0) */ +extern s32 func_80029178(s32 a0); +extern void func_801418F8(void); +extern void func_80141A60(void); +extern void func_80141C0C(s32 param_1); +extern s32 func_80015144(void); +extern unsigned char D_80112C04[]; +extern unsigned char D_80112C50[]; +extern unsigned char D_80112C9C[]; +extern unsigned char D_80112CE8[]; +extern unsigned char D_80112D38[]; +extern unsigned char D_80112D78[]; +extern unsigned char D_80112DBC[]; +extern unsigned char D_80112DF4[]; +extern unsigned char D_80112E14[]; +extern unsigned char D_80112E40[]; +extern unsigned char D_80112E6C[]; +extern unsigned char D_80112EBC[]; +extern unsigned char D_80112F0C[]; +extern unsigned char D_80112F48[]; +extern unsigned char D_80112F9C[]; +extern unsigned char D_80112FDC[]; +extern unsigned char D_8011302C[]; +extern unsigned char D_80113074[]; +extern unsigned char D_801130B8[]; +extern unsigned char D_801130E8[]; +extern unsigned char D_80113138[]; +extern unsigned char D_8011317C[]; +extern unsigned char D_801131A8[]; +extern unsigned char D_801131E8[]; +extern unsigned char D_80113214[]; +extern unsigned char D_80113254[]; +extern unsigned char D_80113278[]; +extern unsigned char D_801132B8[]; +extern unsigned char D_801132E4[]; +extern unsigned char D_80113324[]; +extern unsigned char D_80113360[]; +extern unsigned char D_801133A4[]; +extern unsigned char D_801133F4[]; +extern unsigned char D_80113440[]; +extern unsigned char D_80113474[]; +extern unsigned char D_801134B0[]; +extern unsigned char D_801134FC[]; +extern unsigned char D_80113530[]; +extern unsigned char D_80113554[]; +extern unsigned char D_801135A8[]; +extern unsigned char D_80113600[]; +extern unsigned char D_80113650[]; +extern unsigned char D_80113694[]; +extern unsigned char D_801136DC[]; +extern unsigned char D_80113724[]; +extern unsigned char D_80113744[]; +extern unsigned char D_80113770[]; +extern unsigned char D_80113794[]; +extern unsigned char D_801137D8[]; +extern unsigned char D_8011381C[]; +extern unsigned char D_8011383C[]; +extern unsigned char D_8011386C[]; +extern unsigned char D_801138A4[]; +extern unsigned char D_801138D0[]; +extern unsigned char D_80113900[]; +extern unsigned char D_80113944[]; +extern unsigned char D_80113964[]; +extern unsigned char D_8011399C[]; +extern unsigned char D_801139E8[]; +extern unsigned char D_80113A28[]; +extern unsigned char D_80113A50[]; +extern unsigned char D_80113A84[]; +extern unsigned char D_80113AB0[]; +extern unsigned char D_80113AE0[]; +extern unsigned char D_80113B34[]; +extern unsigned char D_80113B68[]; +extern unsigned char D_80113BA4[]; +extern unsigned char D_80113BC0[]; +extern unsigned char D_80113BF0[]; +extern unsigned char D_80113C20[]; +extern unsigned char D_80113C3C[]; +extern unsigned char D_80113C7C[]; +extern unsigned char * func_80141CA4(void); +extern void func_80142414(s32 a0, s16 a1); +extern void func_80142454(s32 a0); +extern void func_801424E4(short *param_1); +extern void func_801425CC(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern s32 func_8012AD50(void *a0); +extern void func_80142608(s32 param_1); +extern void func_801426D4(s32 a0); +extern void func_80142740(int param_1); +extern void func_80142778(u8 *a1); +extern void func_801427DC(void); +extern void func_801427E4(void); +extern void func_801427EC(int param_1); +extern s32 func_80142DB8(s32 *a0); +extern s32 func_80142D38(s32 *a0); +extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); +extern void func_801428CC(s32 *a0); +extern void func_8014292C(int param_1); +extern void func_80142978(int param_1); +extern void func_801429C4(int param_1); +extern void func_80142A80(void); +extern void func_80142C7C(void); +extern void func_80142C84(s32 a0); +extern void func_80142C9C(s32 * arg0); +extern void func_80142B2C(void *arg0); +extern void func_80142DC4(int param_1); +extern void func_80142E38(int param_1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_80142EC0(s32 param_1); +extern void func_80142FFC(s32 *a0); +extern void func_8014305C(int param_1); +extern void func_80143188(s32 *a0); +extern int func_8001CA88(int, void *); +extern void func_800233CC(void *, unsigned short); +extern void func_801431E8(s32 param_1); +extern void func_80142C9C(s32 *a0); +extern void func_801432FC(s32 *a0); +extern void func_80143390(s32 *a0); +extern void func_80143458(s32 param_1); +extern void func_8014358C(s32 param_1); +extern s32 rand(void); +extern void func_80143640(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80143970(s32 a0); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_80143994(s32 a0, s32 a1); +extern void func_801439C0(u8 *a0); +extern s16 D_801152AC; +extern s16 D_801152AA; +extern void func_801439FC(s32 a0); +extern void func_80143B30(void *a0); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80143B6C(s32 arg0, s32 arg1); +extern void func_80143BDC(u16 *a0); +extern void func_80143C38(void *a0); +extern void func_80143C74(s32 a0, s32 a1); +extern void func_80143C98(void *a0); +extern void func_80143E68(void *a0); +extern void func_80143EA4(void); +extern void func_80143EAC(void); +extern void func_80143EB4(void); +extern s32 func_8004787C(s32 a0); +extern void func_80143EBC(s32 a0); +extern void func_80144054(void *a0); +extern void func_801442F8(int param_1); +extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80144364(int param_1); +extern u8 D_800D387C[]; +extern u8 D_800D3888[]; +extern void func_80144558(u8 *param_1); +extern void func_801446A4(int param_1); +extern void func_8014477C(void *param_1); +extern void func_80144880(s32 param_1); +extern void func_80144988(s32 a0); +extern void func_801449C8(void *a0); +extern void func_80144A04(s32 *a0); +extern void func_80144A2C(void *a0); +extern void func_80144A68(s32 *a0); +extern void func_80144A90(void); +extern void func_80144A98(u8 *a0); +extern void func_80144B14(void); +extern void func_80144AEC(s32 *a0); +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern void func_80145B24(void); +extern void func_80145934(void); +extern void func_80145A2C(void); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_80078EC0; +extern void func_80145BF8(void); +extern void func_80145C54(void); +extern void func_80146014(s32 a0); +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C3C(u8 *a0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern volatile s32 D_80127090; +extern volatile s32 D_80127094; +extern volatile s32 D_80127098; +extern void func_80147F78(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80148038(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148D44(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 func_80149FB0(s32 a0); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8014A1B0(s32 a0, s32 a1); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern u8 D_80078E78[]; +extern s32 func_8016F1C4(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_8014BD60(s32 a0, s32 a1); +extern void func_8014B084(void); +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 a0, s32 a1, void* a2); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern void func_8014DF94(s32 arg0); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); /* canonical (engine_core.h:11555) */ +extern s32 func_8014E284(s32 a0, s16 *arg1, s16 *arg2); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E48C(s32 a0); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014ED80(struct SubED80 *a0); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014F4C0(u8 *a0); +extern void func_8014F468(void); +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern void func_8014FA04(s32 a0); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern s32 func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_801502EC(s32 e, void *a1, void *a2); +extern s32 func_80150460(s32 e, s32 a1); +extern s32 func_80150170(void *e); +extern s32 func_80150460(s32 a, s32 b); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern void func_801504D8(u16 *a0); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B28(int param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void func_80152C80(s32* a0); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern u8 D_80062C04[]; +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154B4C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_80157808(s32 a0); +extern void func_801577C8(int param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +/* ==== end §8b carried decl layer ==== */ + + + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8018C7AC[])(void); + extern int D_801F4F30; + extern int D_801F4F34; + extern int D_801F4F38; + extern int D_801F4F3C; + extern int D_801F4F40; + short sVar1; + + D_8018C7AC[*(unsigned short *)(param_1 + 2)](); + switch (D_801F4F30) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801F4F38 = 0; + D_801F4F34 = 0x46; + D_801F4F30 += 1; + break; + case 2: + if (D_801F4F34 == 0) { + if (SsGetMute() == 0) { + D_801F4F30 += 1; + } + } else { + D_801F4F34 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801F4F30 += 1; + } + break; + case 4: + D_801F4F3C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801F4F34 = 0xd2; + } else { + D_801F4F34 = 1; + } + break; + case 5: + D_801F4F34 -= 1; + if (D_801F4F34 == -1 || D_801F4F40 != 0) { + D_801F4F34 = 0; + D_801F4F30 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801F4F34 = 0x28; + D_801F4F30 += 1; + break; + case 7: + if (D_801F4F34 == 0) { + if (SsGetMute() == 0) { + D_801F4F30 += 1; + } + } else { + D_801F4F34 -= 1; + } + break; + case 8: + D_801F4F38 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158ab4 (src/shared) */ + + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158ae4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); + +void func_80158BB0(void *arg0) { + + extern M2C_UNK D_800D58D8; + extern s32 D_801F4F30; + if (D_801F4F30 == 0) { + D_801F4F30 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158c40 (src/shared) */ + + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158cd8 (src/shared) */ + + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158d60 (src/shared) */ + + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158e24 (src/shared) */ + + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + + extern s32 D_801F4F3C; + extern s32 D_8018C77C[]; + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801F4F3C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018C77C[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + + extern s32 D_801F4F40; + extern u8 D_80110C3C[]; + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801F4F40 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592cc (src/shared) */ + + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); + +void func_8015934C(void *arg0) { + + extern u8 D_800AE6BD; + extern s32 D_801F4F30; + extern s32 D_801F4F38; + void *temp_v1; + + if (D_801F4F30 == 4) { + D_801F4F30 = 5; + } + if (D_801F4F38 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593e4 (src/shared) */ + + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + + +s32 func_80159464(void) { + + extern Entry D_8018C7E4[]; + Entry *e; + + e = D_8018C7E4; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_801588CC", func_801594E8); + + + +void func_80159698(void *a0) { + + extern void (*D_8018C9F8[])(void); + D_8018C9F8[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596d4 (src/shared) */ + + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018C818)); + func_80028620(1, &(*(u8 *)&D_8018C818) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018C818) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987c (src/shared) */ + + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598bc (src/shared) */ + + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598e0 (src/shared) */ + + + + +void func_80159968(void *a0) { + + extern void (*D_8018CA9C[])(void); + D_8018CA9C[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599e0 (src/shared) */ + + +void func_80159A18(void) { +} + +INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159b08 (src/shared) */ + + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159b3c (src/shared) */ + + + + +void func_80159B70(void *a0) { + + extern void (*D_8018CBF0[])(void); + D_8018CBF0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159bac (src/shared) */ + + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + + +void func_80159BE4(s32 arg0) +{ + + extern unsigned char D_8018CA0C; + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018CA0C); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + +INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_801588CC", func_80159C84); + +DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015a1c8 (src/shared) */ + + +DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */ + + +DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */ + + + + +void func_8015A264(void *a0) { + + extern void (*D_8018CBF8[])(void); + D_8018CBF8[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */ + + + +// @class: other +// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay + + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern void func_801553A8(s32 *a0); +extern s32 func_80172608(u8 *a0); +extern void func_80146CA0(void *a0); + +void func_8015A2D8(s32 param_1) +{ + + extern int D_8018CA1C; + unsigned char bVar1; + + ((void (*)(int, int *))func_80146DB8)(param_1, &D_8018CA1C); + if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) { + func_80154150(param_1, 10); + func_80154A74(param_1, 0x1c); + *(int *)(param_1 + 0x2c) = 0xfffc0000; + goto LAB_8015a38c; + } + bVar1 = *(unsigned char *)(param_1 + 0xa9); + switch (bVar1) { + case 0x41: + func_80154150(param_1, 7); + break; + case 0x53: + case 0x73: + func_80154150(param_1, 6); + break; + default: + *(int *)(param_1 + 0x23c) = 0; + goto LAB_8015a390; + } + func_80154A74(param_1, 0x21); +LAB_8015a38c: + *(int *)(param_1 + 0x23c) = 0; +LAB_8015a390: + func_8014C010(param_1, 2); + ((void (*)(int))func_801553A8)(param_1); + ((void (*)(int))func_80172608)(param_1); + ((void (*)(int))func_80146CA0)(param_1); + return; +} + + +INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_801588CC", func_8015A3C8); + +DEFINE_func_8015AB7C() /* dedup: shared engine-core @0x8015ab7c (src/shared) */ + + +DEFINE_func_8015ABD4() /* dedup: shared engine-core @0x8015abd4 (src/shared) */ + + + +// @class: plumbing +// @stuck: none — MATCH (param held in $s0 across 3 calls; lhu 0x16E; &D_8018CA3C arg) +extern void func_80154150(s32 a0, s32 a1); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern s32 func_80161CD0(s32 a0, s32 a1); + +void func_8015AC48(s32 arg0) +{ + + extern M2C_UNK D_8018CA3C; + func_80154150(arg0, 9); + func_80146DB8((s32 *)arg0, &D_8018CA3C); + func_80161CD0(arg0, M2C_FIELD(arg0, u16 *, 0x16E)); +} + + +DEFINE_func_8015AC90() /* dedup: shared engine-core @0x8015ac90 (src/shared) */ + + +DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015acc4 (src/shared) */ + + +DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015ad08 (src/shared) */ + + + + +void func_8015AD3C(void *a0) { + + extern void (*D_8018CC00[])(void); + D_8018CC00[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015ad78 (src/shared) */ + + +DEFINE_func_8015ADB0() /* dedup: shared engine-core @0x8015adb0 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_801588CC", func_8015AE2C); + +DEFINE_func_8015B6F4() /* dedup: shared engine-core @0x8015b6f4 (src/shared) */ + + +DEFINE_func_8015B7B4() /* dedup: shared engine-core @0x8015b7b4 (src/shared) */ + + +DEFINE_func_8015B858() /* dedup: shared engine-core @0x8015b858 (src/shared) */ + + +DEFINE_func_8015B8F8() /* dedup: shared engine-core @0x8015b8f8 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_801588CC", func_8015B950); + +DEFINE_func_8015BD8C() /* dedup: shared engine-core @0x8015bd8c (src/shared) */ + + +DEFINE_func_8015BDD0() /* dedup: shared engine-core @0x8015bdd0 (src/shared) */ + + +DEFINE_func_8015BE04() /* dedup: shared engine-core @0x8015be04 (src/shared) */ + + + + +void func_8015BE38(struct Obj *a0) { + + extern void (*D_8018CC1C[])(void); + D_8018CC1C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_8015BE74() /* dedup: shared engine-core @0x8015be74 (src/shared) */ + + +DEFINE_func_8015BE94() /* dedup: shared engine-core @0x8015be94 (src/shared) */ + + +DEFINE_func_8015BEC4() /* dedup: shared engine-core @0x8015bec4 (src/shared) */ + + +DEFINE_func_8015BEE4() /* dedup: shared engine-core @0x8015bee4 (src/shared) */ + + +DEFINE_func_8015BF04() /* dedup: shared engine-core @0x8015bf04 (src/shared) */ + + +DEFINE_func_8015BF48() /* dedup: shared engine-core @0x8015bf48 (src/shared) */ + + +DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015bf7c (src/shared) */ + + +DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015bfb0 (src/shared) */ + + + + +void func_8015BFF4(void *a0) { + + extern void (*D_8018CC28[])(void); + D_8018CC28[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_801588CC", func_8015C030); + +DEFINE_func_8015C08C() /* dedup: shared engine-core @0x8015c08c (src/shared) */ + + +DEFINE_func_8015C0C4() /* dedup: shared engine-core @0x8015c0c4 (src/shared) */ + + +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern void func_80146CA0(void *a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147324(s32 a0); +extern void func_801473EC(s32 *a0); +extern void func_80147A84(s32 arg0); +extern int func_80148AFC(void *a0); +extern s32 func_80149FB0(s32 a0); +extern void func_8014C010(s32 a0, s32 a1); +extern void func_8014CC28(s32 a0); +extern void func_8014D738(void); +extern void func_8014F3E8(s32 a0); +extern s32 func_8015BE94(); +extern void func_8015C0C4(s32 a0); + + + +s32 func_8015C128(s32 param_1) { + + extern u16 D_800B99DA; + extern void func_8015C6E0(int); + extern void (*D_8018CAA8[])(int); + + int sp10[3]; + int sp20[3]; + int temp_s0; + int temp_v0; + + ((void(*)())func_80149FB0)(); + if (((int(*)(int))func_80148AFC)(((int)param_1)) & 0xFF) { + sp10[0] = 0; + sp10[1] = 0; + sp10[2] = -0x4000; + ((void(*)(int, int *, int *))func_8001382C)(*(short *)(*(int *)(((int)param_1) + 0x20) + 0x12), sp10, sp20); + *(int *)(((int)param_1) + 0x234) += sp20[0]; + *(int *)(((int)param_1) + 0x238) += sp20[1]; + *(int *)(((int)param_1) + 0x23C) += sp20[2]; + } + ((void(*)(int, int *, int *))func_8001382C)((short)(-*(unsigned short *)(*(int *)(((int)param_1) + 0x20) + 0x12)), + (int *)(((int)param_1) + 0x234), sp20); + ((void(*)(int, int *))func_80146DB8)(((int)param_1), sp20); + func_80147A84(((int)param_1)); + ((void(*)(int))func_801473EC)(((int)param_1)); + if (!(D_800B99DA & 3)) { + ((void(*)(int, int))func_8014C010)(((int)param_1), 1); + ((void(*)(int))func_80147324)(0x65F); + } + if (((int(*)(int))func_8014D738)(((int)param_1)) != 0) { + D_8018CAA8[*(u16 *)((int)param_1)](((int)param_1)); + func_8015C6E0(((int)param_1)); + return; + } + temp_s0 = ((int(*)(int))func_8014CC28)(((int)param_1)); + temp_v0 = ((int(*)(int))func_8014F3E8)(((int)param_1)); + if (temp_v0 != 0) { + if ((temp_v0 & 0xFF00) != 0x4000) { + ((void(*)(int, int))func_80146E90)(((int)param_1), 6); + ((void(*)(int))func_80146CA0)(((int)param_1)); + return; + } + if ((temp_v0 & 0x4000) && ((int(*)(int))func_80146E98)(((int)param_1)) != 0) { + ((void(*)(int, int))func_80147078)(((int)param_1), 4); + ((void(*)(int))func_8015C0C4)(((int)param_1)); + } + } else if (temp_s0 == 0) { + D_8018CAA8[*(u16 *)((int)param_1)](((int)param_1)); + ((void(*)(int, int))func_80147078)(((int)param_1), 3); + ((void(*)(int))func_8015BE94)(((int)param_1)); + } +} + + diff --git a/src/ov_SC07_007/ov_SC07_007_jr_80154C24.c b/src/ov_SC07_007/ov_SC07_007_jr_80154C24.c index d33580bf3..0e1f018af 100644 --- a/src/ov_SC07_007/ov_SC07_007_jr_80154C24.c +++ b/src/ov_SC07_007/ov_SC07_007_jr_80154C24.c @@ -2518,646 +2518,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_801852CC[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158ab4 (src/shared) */ - - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158ae4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); - -void func_80158BB0(void *arg0) { - - extern M2C_UNK D_800D58D8; - extern s32 D_801C6698; - if (D_801C6698 == 0) { - D_801C6698 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158c40 (src/shared) */ - - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158cd8 (src/shared) */ - - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158d60 (src/shared) */ - - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158e24 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - - extern s32 D_801C66A4; - extern s32 D_801852A0[]; - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801C66A4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801852A0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - - extern s32 D_801C66A8; - extern u8 D_80110C3C[]; - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801C66A8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592cc (src/shared) */ - - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); - -void func_8015934C(void *arg0) { - - extern u8 D_800AE6BD; - extern s32 D_801C6698; - extern s32 D_801C66A0; - void *temp_v1; - - if (D_801C6698 == 4) { - D_801C6698 = 5; - } - if (D_801C66A0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593e4 (src/shared) */ - - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - - -s32 func_80159464(void) { - - extern Entry D_80185308[]; - Entry *e; - - e = D_80185308; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_80154C24", func_801594E8); - - - -void func_80159698(void *a0) { - - extern void (*D_8018551C[])(void); - D_8018551C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596d4 (src/shared) */ - - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018533C)); - func_80028620(1, &(*(u8 *)&D_8018533C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018533C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987c (src/shared) */ - - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598bc (src/shared) */ - - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598e0 (src/shared) */ - - - - -void func_80159968(void *a0) { - - extern void (*D_801855C0[])(void); - D_801855C0[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599e0 (src/shared) */ - - -void func_80159A18(void) { -} - -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159b08 (src/shared) */ - - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159b3c (src/shared) */ - - - - -void func_80159B70(void *a0) { - - extern void (*D_80185714[])(void); - D_80185714[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159bac (src/shared) */ - - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - - -void func_80159BE4(s32 arg0) -{ - - extern unsigned char D_80185530; - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80185530); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - - -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_80154C24", func_80159C84); - -DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015a1c8 (src/shared) */ - - -DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */ - - -DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */ - - - - -void func_8015A264(void *a0) { - - extern void (*D_8018571C[])(void); - D_8018571C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay - - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_801553A8(s32 *a0); -extern s32 func_80172608(u8 *a0); -extern void func_80146CA0(void *a0); - -void func_8015A2D8(s32 param_1) -{ - - extern int D_80185540; - unsigned char bVar1; - - ((void (*)(int, int *))func_80146DB8)(param_1, &D_80185540); - if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) { - func_80154150(param_1, 10); - func_80154A74(param_1, 0x1c); - *(int *)(param_1 + 0x2c) = 0xfffc0000; - goto LAB_8015a38c; - } - bVar1 = *(unsigned char *)(param_1 + 0xa9); - switch (bVar1) { - case 0x41: - func_80154150(param_1, 7); - break; - case 0x53: - case 0x73: - func_80154150(param_1, 6); - break; - default: - *(int *)(param_1 + 0x23c) = 0; - goto LAB_8015a390; - } - func_80154A74(param_1, 0x21); -LAB_8015a38c: - *(int *)(param_1 + 0x23c) = 0; -LAB_8015a390: - func_8014C010(param_1, 2); - ((void (*)(int))func_801553A8)(param_1); - ((void (*)(int))func_80172608)(param_1); - ((void (*)(int))func_80146CA0)(param_1); - return; -} - - -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_80154C24", func_8015A3C8); - -DEFINE_func_8015AB7C() /* dedup: shared engine-core @0x8015ab7c (src/shared) */ - - -DEFINE_func_8015ABD4() /* dedup: shared engine-core @0x8015abd4 (src/shared) */ - - - -// @class: plumbing -// @stuck: none — MATCH (param held in $s0 across 3 calls; lhu 0x16E; &D_80185560 arg) -extern void func_80154150(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80161CD0(s32 a0, s32 a1); - -void func_8015AC48(s32 arg0) -{ - - extern M2C_UNK D_80185560; - func_80154150(arg0, 9); - func_80146DB8((s32 *)arg0, &D_80185560); - func_80161CD0(arg0, M2C_FIELD(arg0, u16 *, 0x16E)); -} - - -DEFINE_func_8015AC90() /* dedup: shared engine-core @0x8015ac90 (src/shared) */ - - -DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015acc4 (src/shared) */ - - -DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015ad08 (src/shared) */ - - - - -void func_8015AD3C(void *a0) { - - extern void (*D_80185724[])(void); - D_80185724[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015ad78 (src/shared) */ - - -DEFINE_func_8015ADB0() /* dedup: shared engine-core @0x8015adb0 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_80154C24", func_8015AE2C); - -DEFINE_func_8015B6F4() /* dedup: shared engine-core @0x8015b6f4 (src/shared) */ - - -DEFINE_func_8015B7B4() /* dedup: shared engine-core @0x8015b7b4 (src/shared) */ - - -DEFINE_func_8015B858() /* dedup: shared engine-core @0x8015b858 (src/shared) */ - - -DEFINE_func_8015B8F8() /* dedup: shared engine-core @0x8015b8f8 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_80154C24", func_8015B950); - -DEFINE_func_8015BD8C() /* dedup: shared engine-core @0x8015bd8c (src/shared) */ - - -DEFINE_func_8015BDD0() /* dedup: shared engine-core @0x8015bdd0 (src/shared) */ - - -DEFINE_func_8015BE04() /* dedup: shared engine-core @0x8015be04 (src/shared) */ - - - - -void func_8015BE38(struct Obj *a0) { - - extern void (*D_80185740[])(void); - D_80185740[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015BE74() /* dedup: shared engine-core @0x8015be74 (src/shared) */ - - -DEFINE_func_8015BE94() /* dedup: shared engine-core @0x8015be94 (src/shared) */ - - -DEFINE_func_8015BEC4() /* dedup: shared engine-core @0x8015bec4 (src/shared) */ - - -DEFINE_func_8015BEE4() /* dedup: shared engine-core @0x8015bee4 (src/shared) */ - - -DEFINE_func_8015BF04() /* dedup: shared engine-core @0x8015bf04 (src/shared) */ - - -DEFINE_func_8015BF48() /* dedup: shared engine-core @0x8015bf48 (src/shared) */ - - -DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015bf7c (src/shared) */ - - -DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015bfb0 (src/shared) */ - - - - -void func_8015BFF4(void *a0) { - - extern void (*D_8018574C[])(void); - D_8018574C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_80154C24", func_8015C030); - -DEFINE_func_8015C08C() /* dedup: shared engine-core @0x8015c08c (src/shared) */ - - -DEFINE_func_8015C0C4() /* dedup: shared engine-core @0x8015c0c4 (src/shared) */ - - -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147324(s32 a0); -extern void func_801473EC(s32 *a0); -extern void func_80147A84(s32 arg0); -extern int func_80148AFC(void *a0); -extern s32 func_80149FB0(s32 a0); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_8014CC28(s32 a0); -extern void func_8014D738(void); -extern void func_8014F3E8(s32 a0); -extern s32 func_8015BE94(); -extern void func_8015C0C4(s32 a0); - - - -s32 func_8015C128(s32 param_1) { - - extern u16 D_800B99DA; - extern void func_8015C6E0(int); - extern void (*D_801855CC[])(int); - - int sp10[3]; - int sp20[3]; - int temp_s0; - int temp_v0; - - ((void(*)())func_80149FB0)(); - if (((int(*)(int))func_80148AFC)(((int)param_1)) & 0xFF) { - sp10[0] = 0; - sp10[1] = 0; - sp10[2] = -0x4000; - ((void(*)(int, int *, int *))func_8001382C)(*(short *)(*(int *)(((int)param_1) + 0x20) + 0x12), sp10, sp20); - *(int *)(((int)param_1) + 0x234) += sp20[0]; - *(int *)(((int)param_1) + 0x238) += sp20[1]; - *(int *)(((int)param_1) + 0x23C) += sp20[2]; - } - ((void(*)(int, int *, int *))func_8001382C)((short)(-*(unsigned short *)(*(int *)(((int)param_1) + 0x20) + 0x12)), - (int *)(((int)param_1) + 0x234), sp20); - ((void(*)(int, int *))func_80146DB8)(((int)param_1), sp20); - func_80147A84(((int)param_1)); - ((void(*)(int))func_801473EC)(((int)param_1)); - if (!(D_800B99DA & 3)) { - ((void(*)(int, int))func_8014C010)(((int)param_1), 1); - ((void(*)(int))func_80147324)(0x65F); - } - if (((int(*)(int))func_8014D738)(((int)param_1)) != 0) { - D_801855CC[*(u16 *)((int)param_1)](((int)param_1)); - func_8015C6E0(((int)param_1)); - return; - } - temp_s0 = ((int(*)(int))func_8014CC28)(((int)param_1)); - temp_v0 = ((int(*)(int))func_8014F3E8)(((int)param_1)); - if (temp_v0 != 0) { - if ((temp_v0 & 0xFF00) != 0x4000) { - ((void(*)(int, int))func_80146E90)(((int)param_1), 6); - ((void(*)(int))func_80146CA0)(((int)param_1)); - return; - } - if ((temp_v0 & 0x4000) && ((int(*)(int))func_80146E98)(((int)param_1)) != 0) { - ((void(*)(int, int))func_80147078)(((int)param_1), 4); - ((void(*)(int))func_8015C0C4)(((int)param_1)); - } - } else if (temp_s0 == 0) { - D_801855CC[*(u16 *)((int)param_1)](((int)param_1)); - ((void(*)(int, int))func_80147078)(((int)param_1), 3); - ((void(*)(int))func_8015BE94)(((int)param_1)); - } -} - diff --git a/src/ov_SC07_007/ov_SC07_007_jr_801588CC.c b/src/ov_SC07_007/ov_SC07_007_jr_801588CC.c new file mode 100644 index 000000000..2f92325e7 --- /dev/null +++ b/src/ov_SC07_007/ov_SC07_007_jr_801588CC.c @@ -0,0 +1,2659 @@ +#include "common.h" +#include "../shared/engine_core.h" + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +typedef struct { s32 w[8]; } Vec8; +typedef struct { s32 m[3][3]; s32 t[3]; } MATRIX; +typedef struct { s32 vx, vy, vz; } VECTOR; +typedef struct { s16 h[8]; } Buf; +typedef struct { char _b[8]; } M8; /* size 8, alignment 1 -> unaligned copy */ +typedef struct { u16 f0, f2, f4; s16 f6; } Box_80133784; +typedef struct { s16 x, y, z; } Vec3s; +typedef struct { s32 f0; } E4; +typedef struct { u16 f0; s16 f2; } Prim4; +typedef struct { s16 x; s16 y; } Hw4; +typedef struct { s32 f0; u32 *f4; s32 f8; s32 fC; s32 f10; } Rec20; +typedef struct { u8 d[0x60]; } Blk60; +extern void func_80128288(void); +extern void func_80128158(void); +extern void func_801285E4(void); +extern void func_80128178(void); +extern void func_80128678(void); +extern void func_80128198(void); +extern void func_80128714(void); +extern void func_801281B8(void); +extern void func_8013E67C(void); +extern void func_801281D8(void); +extern void func_8013E558(void); +extern void func_801281F8(void); +extern s32 func_80128218(void); +extern void func_80128A28(void); +extern void func_80128228(void); +extern void func_80128AF4(void); +extern void func_80128248(void); +extern void func_801282EC(void); +extern void func_80128268(void); +extern void func_80011B7C(int); +extern void func_801282CC(void); +extern void func_8001C0C8(void); +extern void func_80015310(void); +extern void func_80129258(void); +extern void func_801378F0(void); +extern void func_80010E14(void); +extern s16 currentLocationId; +extern s32 func_80029504(void); +extern s32 func_800CF854(s32); +extern s32 func_80128998(void); +extern s32 func_801289F0(void); +extern s32 func_801288E8(s32); +extern s32 func_80128940(s32); +extern s32 func_80029178(s32); +extern s32 func_801288B0(void); +extern void func_80011C10(void); +extern void func_8012832C(void); +extern void func_80129220(void); +extern void func_80011E24(void); +extern void func_80128C14(void); +extern void func_8002AEF8(void); +extern void func_800CFBBC(void); +extern void SsUtReverbOff(void); +extern void func_8013C98C(void); +extern void func_80129C40(s32 a0); +extern void func_800D0630(void); +extern void func_80145CEC(void); +extern void func_80144B9C(void); +extern u8 D_800B9A17; +extern u8 D_800B9A10; +extern void func_80128420(void); +extern s32 func_800D0588(void); +extern void func_801284B8(void); +extern void func_80175308(void); +extern void func_8016E8F0(void); +extern void func_80175494(void); +extern u8 D_800B9A64; +extern void func_801284F0(void); +extern void func_80146074(void); +extern void func_8012853C(void); +extern void func_80178608(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern s32 func_80011A3C(void); +extern short currentLocationId; +extern short D_800B99F2; +extern void func_80128564(void); +extern u8 D_800B9A11; +extern void func_801285D4(void); +extern s32 func_800D18DC(void); +extern void func_8014607C(void); +extern void func_801287B8(void); +extern void func_80029444(void); +extern void func_800D1754(void); +extern void func_8014ED28(s32 _arg0); +extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); +extern int func_801288E8(int arg0); +extern int func_80128940(int arg0); +extern void func_80010AE0(s32 a0); +extern void func_80018450(s32 a0, s32 a1); +extern void func_800183E0(s32 a0); +extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); +extern s32 func_80128DB4(s32 a0, s32 *a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(s32 param_1, s32 *param_2); +extern void func_80128FAC(u16 *arg0); +extern s16 D_8011DB2C; +extern s16 D_8011DB30; +extern s32 D_80126AEC; +extern void func_80129010(void); +extern u8 *func_8012913C(s32 a0); +extern u8 * func_801290DC(s32 a0, u8 *a1); +extern void func_8001D074(s32 a, s32 b); +extern u8 *func_801291C0(void); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 * func_8012913C(s32 arg0); +extern void func_80016714(void *a0, s32 a1); +extern u8 * func_801291C0(void); +extern void func_80129248(s16 a0); +extern void func_801292C8(u8 *a0); +extern void func_8012927C(void); +extern void func_8012931C(struct vec *a0); +extern void func_80129350(s32 a0, s32 a1); +extern void func_80129374(s32 a0, s32 a1); +extern s16 D_800B9AAC[]; +extern s16 D_800B9AAE[]; +extern s16 D_800B9AB0[]; +extern s16 D_800B9AB2[]; +extern s16 D_800B9AB4[]; +extern s16 D_800B9AB6[]; +extern s16 D_800B9AB8[]; +extern s16 D_800B9ABA[]; +extern void func_80129398(void); +extern s16 D_80114EE0; +extern void func_80129428(void); +extern void func_8012943C(void); +extern s32 D_8005128C; +extern u8 D_800B9A78; +extern void func_801298F4(void *arg0); +extern void func_801299C8(s32 a, s32 b, s32 c); +extern void func_8012944C(void); +extern unsigned short D_800B99F0; +extern struct BigCopy D_80126DB8; +extern u8 D_80126948[]; +extern struct BigCopy D_80114EE8; +extern s32 D_80126E60[]; +extern s8 D_801150D6; +extern s8 D_801152C0; +extern u8 D_80127504; +extern void func_800144D4(void); +extern void func_80129C40(s32 _arg0); +extern void func_8012A328(void); +extern void func_80053308(s32); +extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ +extern void GsSetRefView2L(void *); +extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ +extern s32 D_80126F04[]; +extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ +extern s32 D_80126FA8[]; +extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ +extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ +extern s32 D_800AE688[]; +extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ +extern void func_80129CF8(void); +extern void func_8012A018(s32 a, s32 b); +extern void func_80129FF4(void); +extern void func_8012A048(void *a0, s32 a1, u8 a2); +extern void func_8012A018(s32 a0, s32 a1); +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_80126940; +extern s16 D_80126942; +extern s16 D_80126944; +extern void *memcpy(void *, const void *, unsigned int); +extern void func_8012A094(s32 a0); +extern void func_8012A100(s8 a0); +extern void func_8012A0E0(void); +extern s32 D_80120204; +extern s32 D_80120200; +extern s32 D_8012020C; +extern s32 D_80120208; +extern s16 D_80120218; +extern s16 D_80120210; +extern s16 D_8012021A; +extern s16 D_80120212; +extern s16 D_8012021C; +extern s16 D_80120214; +extern s16 D_80120226; +extern s16 D_80120220; +extern s16 D_80120228; +extern s16 D_80120222; +extern s16 D_8012022A; +extern s16 D_80120224; +extern s32 D_80120294; +extern s16 D_80120298; +extern s16 D_8012029A; +extern void func_8012A110(void); +extern void func_8012A2F4(void); +extern s16 D_80127080; +extern s16 D_801152C2; +extern void func_8012A304(s32 a0, s32 a1); +extern void func_8012A464(void); +extern s32 D_801151D4; +extern void func_8012A4BC(void); +extern void func_8012A598(void *a0); +extern void func_8012A568(void (*a0)(void)); +extern void func_8012A62C(s32); +extern void func_8012A5F8(void (*a0)(void), s32 a1); +extern void func_8012A62C(s32 a0); +extern void func_8012A7D4(void *a0, void *a1); +extern s32 func_8012A6D0(void *a0, void *a1); +extern s16 func_8012A68C(void); +extern s32 func_80047D3C(s32 a0); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 func_8012A6D0(void* a0, void* a1); +extern s16 func_8012A79C(s16 *a0, s16 *a1); +extern s16 func_8012A758(void); +extern void func_8012A7D4(void *arg0, void *arg1); +extern void func_8012AAAC(void); +extern void func_8012A828(s32 a0, void * a1); +extern int func_8012ACE0(void *a0); +extern void func_8012A860(void *a0, int a1); +extern void func_8012A8B0(u8 *a0, s32 a1); +extern void func_8012A8E8(void); +extern u8 D_801202A0[]; +extern u16 D_801270C0; +extern void func_8012A988(u8 *a0); +extern void func_8012A908(void); +extern s32 func_8012ACE0(void *a0); +extern void func_8012ACA0(void *arg0); +extern void func_8012AD44(s32 *a0, s16 a1); +extern s32 func_8012AD50(void * arg0); +extern void func_8012AD64(s32 *a0, s16 a1); +extern void func_8012AD6C(void *a0); +extern void func_8012AD80(s32 a0); +extern void func_8012ADE4(u8 *a0); +extern s32 *D_80126B78; +extern s32 *D_80126B90; +extern s32 D_80126B58; +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80013478(s32 a0, s32 a1); +extern s32 func_8012AE00(s32 a0); +extern s32 func_8012AF0C(s32 a0, s32 a1); +extern s32 func_80134510(s32 arg); +extern s32 func_8012B030(u8 *a0); +extern int func_80047948(int a0); +extern int func_8004787C(int a0); +extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8012B178(s32 a0, s32 a1); +extern void func_8012B1B4(s32 a0, s32 a1); +extern void func_8012B200(u8 *a0); +extern void func_8012B21C(void *a0); +extern void func_8012B23C(s32 a0); +extern void func_8012B260(u8 *a0); +extern void func_80049CAC(s32 a0, s32 a1); +extern void func_8012B2CC(s32 a0); +extern void RotMatrixYXZ(void *m, void *p); +extern void func_8012B370(int a0); +extern void func_8004978C(s16 *a0, void *a1); +extern void func_8012B414(int a0); +extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); +extern s32 func_8012B6D4(s16 *a0, s16 *a1); +extern s32 func_8012B70C(s16 *a0, s16 *a1); +extern s32 ratan2(s32 x, s32 y); +extern s32 func_8012B744(void *a0, void *a1); +extern s16 D_80126CB8; +extern s16 D_80126CB4; +extern s32 func_8012B864(s32 a0); +extern s32 func_8012B8A4(s16 *a0); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern s32 func_8012BA10(s32 arg0, s32 arg1); +extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); +extern void Square0(s32 *a0, s32 *a1); +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern s16 D_80126CBA; +extern s32 func_8012BCCC(s32 a0); +extern void func_80013350(s32 a0, void *a1); +extern u8 D_80126B5C; +extern void func_8012BD14(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); +extern void func_8012BE98(s32 a0, u16 *a1); +extern void func_8012BE54(s32 a0); +extern s32 func_800132BC(s32 a0, s32 a1); +extern void func_8012BE98(s32 arg0, u16 * arg1); +extern s32 func_8012BEE8(s32 a0); +extern s32 func_8012BF10(s32 a0, s32 a1); +extern void func_8012BF4C(s32 *a0, s32 a1); +extern void func_8012BF54(void *a0); +extern void func_8012BF68(void *a0); +extern s16 D_80126CB0; +extern s32 func_8012BF7C(s16 *a0); +extern s16 D_80126CAC; +extern short D_80126CAE; +extern int func_8012BFA8(short *a0); +extern s32 D_801274D4; +extern s32 D_801274E0; +extern s32 func_8012C044(s32 a0); +extern void func_8012C218(void *a0); +extern void func_8012C098(void *param_1); +extern s32 func_8012C0EC(s32 a0); +extern void func_8012C194(void); +extern void func_8001CFDC(s32 a, s32 b); +extern void func_8012C1B8(void); +extern u8 D_800B3DF0[]; +extern s32 func_8012C1DC(s32 a0); +extern u8 D_80126720[]; +extern u16 * func_8012C284(u16 *a0); +extern u8 D_80120194[]; +extern s32 func_8012C2D0(void); +extern s32 func_8012C31C(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern u8 D_80078EAE; +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8001C810(s32 a0, s32 a1); +extern s32 func_8012C438(s32 a0, s32 a1); +extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); +extern s32 func_8012C51C(void *a0, s32 a1); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_8012C724(s32 a0, s32 a1); +extern s32 func_8012C750(s32 a0); +extern s32 func_8012C820(u8 *a0); +extern u16 D_801274E4[]; +extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +extern void func_8012CC88(s32 a, s32 b, s32 c); +extern u8 D_800D3918[]; +extern void func_8012CBA4(s32 a0); +extern void func_8012CBCC(s32 a0); +extern void func_8012CBF4(s32 a0); +extern void func_8012CC1C(s32 arg0, s32 arg1); +extern void func_8012CC40(s32 arg0, s32 arg1); +extern void func_8012CC88(s32 a0, s32 a1, s32 a2); +extern void func_8012CC64(s32 a0, s32 a1); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern s32 func_8012CE2C(s32 a0); +extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); +extern void func_8012CFA8(s32 arg0); +extern void func_8012F214(s32 a0, s32 a1, s32 a2); +extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012D098(u16 *param_1, u32 param_2); +extern void func_8012D098(); +extern void func_8012D38C(int a0); +extern void func_8012D3AC(void); +extern s32 AddPrim(s32, void *); +extern s32 RotTransPers(s32, s32, s32 *, s32 *); +extern void SetLineF2(void *); +extern void *func_80010A08(s32); +extern void func_8004914C(void *); +extern void func_800491AC(void *); +extern s32 D_800A651C; +extern u8 D_800AF648; +extern s16 D_800B9A02; +extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8012D5DC(void); +extern s16 D_80126B98; +extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern int func_8012D664(); +extern void func_8012D624(s32 a0); +extern s32 func_8012D714(s32 param_1, u32 param_2); +extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); +extern void func_8014C978(void); +extern s32 func_8012DB84(void); +extern s32 func_8012DE2C(s32 a0); +extern s32 func_8012DDA4(void); +extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); +extern s16 D_80126B9A; +extern u8 D_801152A8[]; +extern void func_8012DFBC(void); +extern void func_8012DFCC(void); +extern void func_8012E014(void); +extern void func_8012E138(void); +extern void func_8012DFD4(u8 *a0); +extern s32 func_8012E27C(void); +extern void func_8012E284(void); +extern s32 GetTPage(s32, s32, s32, s32); +extern s32 func_8005A600(s32, s32, s32, s32, s32); +extern void func_8012E28C(s32 arg0, s32 arg1); +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern void func_8012E32C(void); +extern s32 func_8012E470(s32 a0); +extern void func_8012E4C8(s32 a0); +extern s32 func_8012E504(s32 a0, s32 a1); +extern s32 func_8012E544(s32 a0); +extern s32 func_8012E57C(s32 a0, s32 a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); +extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); +extern s32 func_8012E778(int param_1, int param_2); +extern void func_8012E88C(u8 *a0); +extern void func_8012E8A8(u8 *a0); +extern void func_8012E8C4(u8 *a0); +extern void func_8012E8E0(s32 a0, s32 a1); +extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); +extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); +extern s32 func_8002A4FC(s32 a0); +extern s32 func_8012EECC(s32 a0); +extern void func_8012EFB8(s32 a0); +extern void func_8012EF34(s32 a0, s32 a1); +extern void func_8012EF70(s32 a0, s32 a1); +extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); +extern void func_8012F038(int param_1, short *param_2, short *param_3); +extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); +extern void RotTransSV(s32 a0, s32 a1, void *a2); +extern void func_8012F14C(s32 a0, s32 a1, s32 a2); +extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); +extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); +extern s16 D_80126CB6; +extern void func_8012F374(s32 a0, s32 a1); +extern void *memcpy(void *, const void *, u32); +extern u8 D_80126C38; +extern u8 D_80126C40; +extern u16 D_80126B94; +extern u16 D_80126B96; +extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); +extern void func_80131B14(); +extern void func_80131E00(struct S80131E00 *a0, s32 a1); +extern s32 func_80131A34(s32, s32); +extern void func_80131CA8(int a0, int a1); +extern void func_8012F5F4(s32 arg0); +extern void func_80131C78(s32 a0); +extern void func_8012F68C(s32 arg0); +extern void func_8012F75C(s32 a0); +extern s32 func_8012BEE8(s32); +extern void func_8012F7B4(s32 a0); +extern void func_80131170(); +extern void func_80131CA8(); +extern void func_8012F828(int param_1); +extern void func_80131340(s32 a0); +extern void func_8012F87C(s32 a0); +extern void func_8012F8C8(int param_1); +extern void func_8012F91C(s32 a0); +extern s32 func_80131A34(s32 a0, s32 a1); +extern void func_80131CA8(s32 a0, s32 a1); +extern void func_8012F968(s32 param_1); +extern void func_801319E0(s32 a0); +extern s32 func_80143B6C(s32 a0, s32 a1); +extern void func_8012FB54(s32 a0); +extern void func_8012FC30(s32 a0); +extern void func_8012FCA4(int a0); +extern void func_80131B14(void); +extern void func_8012FCC4(int param_1); +extern void func_8012FDA8(int param_1); +extern void func_80131170(s32 a0, s32 a1, s32 a2); +extern void func_8012FE70(s32 a0); +extern void func_8012FF00(s32 a0); +extern void func_8012FF4C(s32 a0); +extern void func_80130D48(s32 a0); +extern void func_8012FF98(u8 *a0); +extern s32 func_80131AC8(void *a0); +extern void func_8013001C(void *a0); +extern void func_80130088(void *a0); +extern s32 func_8012BCCC(s32); +extern void func_801300F4(s32 a0); +extern void func_801301E8(u8 *a0); +extern void func_80130278(s32 arg0); +extern void func_80130314(s32 a0); +extern void func_80130360(s32 a0); +extern void func_8012E364(void); +extern void func_801303A0(s32 a0); +extern void func_801303EC(void *a0); +extern void func_80143CD4(s32 a0); +extern void func_800CB0E8(s32 a0); +extern void func_80130438(s32 a0); +extern void func_801319E0(int); +extern int func_80131D68(int, int); +extern int func_8012BEE8(int); +extern void func_80131CA8(int, int); +extern void func_80130514(int param_1); +extern void func_801305CC(u8 *a0); +extern void func_8012CBF4(s32); +extern s32 func_80131D68(s32 a0, s32 a1); +extern void func_80130650(s32 a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_80130740(void *a0, u16 *a1); +extern s32 func_801312D0(s32 a0, void *a1); +extern void func_801307B0(s32 a0); +extern void func_80130858(s32 a0); +extern void func_80130898(u8 *a0); +extern void func_801308DC(s32 a0); +extern void func_80166244(); +extern void func_80130974(int param_1); +extern void func_80130A18(u8 *a0); +extern void func_80130AC4(s32 a0); +extern int func_80131A34(int a0, int a1); +extern void func_80130AF0(int param_1); +extern void func_80130D0C(s32 a0); +extern void func_80131170(s32 p, s32 b, s32 c); +extern s32 func_801312D0(s32 param_1, void *param_2); +extern void func_80131E00(); +extern s32 D_801C64E8; +extern s32 D_801C64EC; +extern void func_8002A04C(s32 a0); +extern void func_801319E0(s32 arg0); +extern s32 func_80131CF4(s32 a0); +extern int func_80131D68(int a0, int a1); +extern void func_80131E38(u8 *a0); +extern void func_80131E7C(s32 a0); +extern void func_80131EE4(void); +extern void func_80131EEC(void *a0); +extern void func_80131F28(void *a0); +extern void func_80131F64(void *a0); +extern void func_80131FA0(void *a0); +extern void func_80131FDC(void *a0); +extern void func_801320D0(void); +extern void func_8001C214(int, int); +extern void func_801320D8(int param_1); +extern void func_80132144(int param_1); +extern void func_801321B0(int param_1); +extern void func_8013221C(int param_1); +extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ +extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); +extern void func_80132288(int *param_1, int *param_2, int param_3); +extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_8013240C(s32 a0); +extern void func_8013277C(void); +extern void func_80020F34(s32 a0, s32 a1); +extern void func_80054514(s32 a0, s32 a1); +extern void func_80132784(s32 a0, s32 a1, u32 a2); +extern s32 VectorNormalSS(void *a0, void *a1); +extern void func_80132DC4(s32 a0, s32 a1, s32 a2); +extern s32 func_80132E6C(s16 *a0); +extern void func_80132EC4(void *a0, s16 a1); +extern s32 func_80132EF4(s32 a0, s32 a1); +extern void func_801330E0(s16 *a0, s16 *a1, s32 a2); +extern void func_80133060(u8 *a0, s32 *a1, s32 a2); +extern void func_8013339C(short *param_1, short *param_2); +extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); +extern void func_80136BC4(s32 a0); +extern void func_801336E8(void *a0, int a1, int a2); +extern void func_80136BC4(s32); +extern void func_8013373C(s16 arg0); +extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); +extern s32 func_80133CD4(); +extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); +extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); +extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); +extern s32 func_801345F8(s32 arg); +extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); +extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); +extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); +extern int func_80134A74(int, s16, s16, int); +extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); +extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); +extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); +extern s32 func_801365B8(void *arg0, s32 arg1, s32 arg2); +extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80136C3C(void); +extern void func_80136C1C(void); +extern void func_80136C44(void); +extern void func_80136C4C(void); +extern void func_80136C54(void); +extern void func_80136D00(void); +extern void SetLineG2(void *); +extern void func_80136D08(s32 arg0, s32 arg1); +extern u16 D_80126CC4; +extern M2C_UNK func_800153CC(M2C_UNK, u16, M2C_UNK, M2C_UNK, s32, s32); +extern void func_80136DFC(void); +extern void func_80136EC4(void); +extern short D_800B9A02; +extern u8 D_800A6518[]; +extern void GsSortLine(void *a0, void *a1, s32 a2); +extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); +extern void func_80137030(s16 a0, s16 a1); +extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); +extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); +extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); +extern void func_80137178(s32 x, s32 y); +extern u8 D_800AF630[]; +extern u16 aD800B9A02 __asm__("D_800B9A02"); +extern void func_801372B0(void); +extern void func_80137614(s32 a0, s32 a1, s32 a2); +extern void func_801375EC(s32 a0, s16 a1); +extern s32 func_801399A8(void); +extern void func_801377B4(s32 a0, s32 a1, s32 a2); +extern s32 func_8013767C(s32 a0); +extern void func_801376E8(int a0, int a1); +extern void func_801376C8(int a0); +extern s32 D_80127524; +extern s32 D_80127528; +extern void func_80137840(s32 a0); +extern void func_80139634(void *); +extern void func_80139DC8(void); +extern s16 D_8012752E; +extern void func_801379D8(void); +extern void func_801379EC(void); +extern void func_80138BE0(s32 a0); +extern void func_80137BD8(s32 a0); +extern void func_8013A380(void); +extern void func_801379FC(void); +extern void func_80138BE0(int p); +extern void func_80137B80(void); +extern void func_801392FC(); +extern void func_801397B0(s32 a0); +extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); +extern void func_80139680(s32 a0, u8 *a1); +extern u16 D_800B99D8; +extern int func_80137D08(int arg0, int arg1, short arg2); +extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80137DD4(s32 ent, u8 *arg, u8 *work); +extern void func_801387B8(s32 arg0); +extern void func_80138948(void *a0); +extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); +extern void func_80138B88(s32 a0); +extern void func_8013895C(s32 a0); +extern s16 D_80127540[4]; +extern s32 func_80139D04(s32 a0, s32 a1); +extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); +extern void func_80139B18(s32 a0); +extern void func_80138AB4(s32 a0); +extern void func_80138C30(void *a0); +extern void func_8013A9F8(s32 a0, s32 a1); +extern void func_80138D58(s32 a0, u16 a1); +extern s32 func_80014E80(s32 a0, s32 a1); +extern s32 func_8013914C(s32 a0, s32 a1); +extern void func_800599B8(u16 *); +extern u16 D_80127C0C[]; +extern s32 D_80127548[]; +extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); +extern s32 func_80139220(s32 a0); +extern void func_801391F0(void *a0); +extern void func_801392C8(void *a0); +extern void func_801395D4(void *); +extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80052460(s32 a0, s32 a1, s32 a2); +extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); +extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); +extern void func_80139634(void *a0); +extern void func_80139680(s32 arg0, u8 * arg1); +extern void func_8001931C(void); +extern s16 D_8012752C; +extern void func_80139788(void); +extern void GsSortSprite(void *a0, u8 *a1, s32 a2); +extern void func_801397B0(s32 arg0); +extern void func_8013A8B0(s32 *a0); +extern void func_80139914(s32 arg0); +extern u16 D_80126A08; +extern s16 D_801269F4; +extern s32 D_801269F0; +extern s32 *D_80126A30; +extern void func_80139954(void); +extern s32 D_80126A3C; +extern s32 func_801399F0(s32 a0); +extern s32 D_80127520; +extern void func_80139A34(s32 a0); +extern s32 D_80127530[4]; +extern void func_80139A44(s32 a0, u16 a1); +extern void func_80139A68(s32 a0, u16 a1); +extern void func_80139A8C(s32 a0); +extern void func_80139C7C(u8 *a0); +extern s16 D_8012811A; +extern void func_80139DEC(void); +extern void func_80139DF4(s32 a0); +extern void func_80139E84(s32 a0); +extern void func_80139F0C(s32 a0); +extern void func_80139FBC(struct obj *a0); +extern s32 func_8001B22C(void *a0); +extern void func_80139FE8(void *a0); +extern void func_8013A0A4(struct S8013A0A4 *a0); +extern void func_8013A164(struct S8013A164 *a0); +extern void func_8013A1E8(s32 a0); +extern void func_8013A250(struct S8013A250 *a0); +extern void func_8013A2BC(s32 a0); +extern void func_8013A378(void); +extern u8 D_8011DA80[]; +extern void func_8013A530(); +extern void func_8013A448(void *a0); +extern void func_8013A4C4(struct S8013A4C4 *a0); +extern void func_80015D4C(); +extern void func_80015F04(); +extern void func_8013AA24(s32 a0, s32 a1); +extern void func_8013A530(int param_1); +extern void func_8013A860(void); +extern s32 func_8013A8BC(void); +extern void func_8013A9B4(s32 a0, s32 a1); +extern s32 func_8013A8FC(s32 arg0); +extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); +extern void func_8013B204(s32 a0, s32 a1); +extern void func_8013AF20(); +extern void func_8013B274(s32 a0, s32 a1, void *a2); +extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); +extern void func_8013CA14(void); +extern void func_8013CABC(void); +extern void func_8013CAE8(void); +extern void func_8013CB20(void); +extern void func_8013CB5C(void); +extern void func_8013CF68(); +extern void func_8013D9B0(); +extern void func_8013D064(void); +extern s32 func_8013D13C(void); +extern void func_8013D164(void); +extern void func_8013D178(void); +extern void func_8013D330(void); +extern void func_8013D53C(void); +extern void func_8013DD68(void); +extern void func_8013D8FC(void); +extern void func_8013CF68(void); +extern void func_8013D3D4(int param_1, int param_2); +extern void func_8013DBE4(int param_1); +extern s32 func_8013E054(void); +extern int SquareRoot12(int a0); +extern int func_8013E064(s16 *a0, s16 *a1); +extern int func_8013E0FC(s16 *a0, s16 *a1); +extern int func_8013E194(s16 *a0, s16 *a1); +extern void Square12(s32 *a0, s32 *a1); +extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); +extern s32 func_8013E298(s16 *a0); +extern int func_8013E2C4(short *a0); +extern void *D_801274CC; +extern s32 func_8013E410(void); +extern s32 func_8013E448(s32 a0); +extern void func_8013E370(void); +extern s32 (*D_801274D0)(s32); +extern s32 D_801274D8; +extern s32 D_801274DC; +extern s32 func_8013E448(s32 param_1); +extern void func_800D24A0(s32 a0); +extern void func_80141788(void); +extern void *D_8011DB24; +extern s32 func_800D0EC4(void); +extern void func_80141874(void); +extern u8 D_800B9A15; +extern unsigned char D_800B9A13; +extern u16 D_80115110; +extern unsigned short D_80115112; +extern void func_8013E588(void * _arg0); +extern void func_801754A8(void); +extern s32 func_80014ED4(s32); +extern s32 func_80015018(s32); +extern void func_800190AC(void); +extern void func_80141C04(void); +extern void func_8013E5E8(void); +extern void func_8013E83C(void); +extern void func_8013E6AC(void); +extern void func_800D24A0(s32 arg); +extern void func_8013E814(void); +extern void func_8013E83C(); +extern void func_8013E958(); +extern s32 func_80141C50(void); +extern void func_8013F244(void); +extern void func_8013FAF8(s16 a0, s16 a1); +extern void func_8013E958(void); +extern u8 D_801151C8[]; +extern s32 D_801151D0; +extern u16 D_8011511A; +extern u16 D_8011511E; +extern s32 D_80115130; +extern s16 D_8011514C; +extern void func_8013EA54(void); +extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ +extern s16 func_8014168C(s16 a0); +extern s32 func_8014032C(s32 a0, s32 a1); +extern unsigned char *func_80141CA4(void); +extern void func_8013EB7C(void); +extern s32 func_8013F350(void); /* §30#2 widened (discarding caller) */ +extern u16 D_80115112; +extern void func_8013ED6C(void); +extern s32 func_8013EE10(); +extern void func_8013F138(void); +extern void func_800D2624(void); +extern unsigned short D_80115114; +extern unsigned short D_80115118; +extern void func_8013F1BC(void); +extern void func_80141C0C(s32); +extern u16 D_8011511C; +extern u16 D_80115120; +extern u16 D_80115122; +extern s16 D_80115128; +extern s16 D_8011512A; +extern u16 D_8011512E; +extern u8 D_80115140[]; +extern s16 D_8011514E; +extern u8 D_80115152; +extern u8 D_80115158[]; /* macro-canonical (§8e) */ +extern u8 D_8011515C; /* macro-canonical (§8e) */ +extern u8 D_80183FCC[]; +extern u8 D_80183FE4[]; +extern u16 D_80183EE8[]; +extern s32 func_80029178(s32 arg); +extern s32 func_800291B4(s32 arg); +extern void func_8014AA04(s32 a0); +extern void func_801415C0(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); +extern s32 func_80140608(s32 a0); +extern void func_801407F4(void); +extern s32 func_801416D4(s16); /* macro-canonical (§8e) */ +extern s32 func_8013F350(void); +extern void func_80140E6C(void); +extern void func_80140F00(void); +extern s32 *func_80140958(s32 *, s32, s32); +extern int func_80141100(int); +extern s16 func_8014168C(s16); +extern s32 func_8013FFD8(s16, s32, s32 *); +extern void func_80024054(void *a0, void *a1); +extern s32 *func_800D2650(s32 *, void *, s32, s32, s32, s32); +extern s32 func_800D27DC(s32, s32 *, void *, s32, s32); +extern s32 *func_800D29F8(s32, s32, void *, s32, s32); +extern void func_8013FAF8(s16 arg0, s16 arg1); +extern s32 func_80028D58(void); +extern s32 func_80028DE0(void); +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern int func_800D2CA8(int, int); +extern void func_800D2D10(int, int, void *, int); +extern int func_80029FE4(void); +extern char *func_8002AAB4(void); +extern char *strcpy(char *, const char *); +extern int func_8002A26C(void); +extern int func_8002A2B0(void); +extern int func_8002A4B8(void); +extern int func_8002A998(void); +extern int func_8002A9DC(void); +extern int func_8002A728(void); +extern int func_8002A76C(void); +extern int func_80029FD4(void); +extern s32 func_8002A1B4(void); +extern short func_8002A28C(void); +extern short func_8002A27C(void); +extern s32 func_8002A400(void); +extern short func_8002A4D8(void); +extern short func_8002A4C8(void); +extern s32 func_8002A8E0(void); +extern short func_8002A9B8(void); +extern short func_8002A9A8(void); +extern s32 func_8002A670(void); +extern short func_8002A748(void); +extern short func_8002A738(void); +extern int func_801412A8(int, int, int, int, int, int); +extern int func_80141100(int param_1); +extern void func_800291A0(s32, s32); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_801415C0(s32 param_1, s32 param_2); +extern u8 D_80115148[]; +extern u8 D_80115149[]; +extern u8 D_80115158[]; +extern u8 D_8011514D; +extern u8 D_8011515C; +extern s32 func_800D11F0(s32 a0); +extern s32 func_800D1658(s32 a0); +extern s32 func_801416D4(s16 param_1); +extern void func_8001903C(void); +extern void func_801417C4(void); +extern u8 D_800B9A16; +extern u16 D_80115114; +extern void func_801417F8(void); +extern volatile u16 D_8011511A; +extern u16 D_8011512E; /* §17a-1: canonical width (jr_8013F350 TUs decl u16); byte-neutral here (only use is store-0) */ +extern s32 func_80029178(s32 a0); +extern void func_801418F8(void); +extern void func_80141A60(void); +extern void func_80141C0C(s32 param_1); +extern s32 func_80015144(void); +extern unsigned char D_80112C04[]; +extern unsigned char D_80112C50[]; +extern unsigned char D_80112C9C[]; +extern unsigned char D_80112CE8[]; +extern unsigned char D_80112D38[]; +extern unsigned char D_80112D78[]; +extern unsigned char D_80112DBC[]; +extern unsigned char D_80112DF4[]; +extern unsigned char D_80112E14[]; +extern unsigned char D_80112E40[]; +extern unsigned char D_80112E6C[]; +extern unsigned char D_80112EBC[]; +extern unsigned char D_80112F0C[]; +extern unsigned char D_80112F48[]; +extern unsigned char D_80112F9C[]; +extern unsigned char D_80112FDC[]; +extern unsigned char D_8011302C[]; +extern unsigned char D_80113074[]; +extern unsigned char D_801130B8[]; +extern unsigned char D_801130E8[]; +extern unsigned char D_80113138[]; +extern unsigned char D_8011317C[]; +extern unsigned char D_801131A8[]; +extern unsigned char D_801131E8[]; +extern unsigned char D_80113214[]; +extern unsigned char D_80113254[]; +extern unsigned char D_80113278[]; +extern unsigned char D_801132B8[]; +extern unsigned char D_801132E4[]; +extern unsigned char D_80113324[]; +extern unsigned char D_80113360[]; +extern unsigned char D_801133A4[]; +extern unsigned char D_801133F4[]; +extern unsigned char D_80113440[]; +extern unsigned char D_80113474[]; +extern unsigned char D_801134B0[]; +extern unsigned char D_801134FC[]; +extern unsigned char D_80113530[]; +extern unsigned char D_80113554[]; +extern unsigned char D_801135A8[]; +extern unsigned char D_80113600[]; +extern unsigned char D_80113650[]; +extern unsigned char D_80113694[]; +extern unsigned char D_801136DC[]; +extern unsigned char D_80113724[]; +extern unsigned char D_80113744[]; +extern unsigned char D_80113770[]; +extern unsigned char D_80113794[]; +extern unsigned char D_801137D8[]; +extern unsigned char D_8011381C[]; +extern unsigned char D_8011383C[]; +extern unsigned char D_8011386C[]; +extern unsigned char D_801138A4[]; +extern unsigned char D_801138D0[]; +extern unsigned char D_80113900[]; +extern unsigned char D_80113944[]; +extern unsigned char D_80113964[]; +extern unsigned char D_8011399C[]; +extern unsigned char D_801139E8[]; +extern unsigned char D_80113A28[]; +extern unsigned char D_80113A50[]; +extern unsigned char D_80113A84[]; +extern unsigned char D_80113AB0[]; +extern unsigned char D_80113AE0[]; +extern unsigned char D_80113B34[]; +extern unsigned char D_80113B68[]; +extern unsigned char D_80113BA4[]; +extern unsigned char D_80113BC0[]; +extern unsigned char D_80113BF0[]; +extern unsigned char D_80113C20[]; +extern unsigned char D_80113C3C[]; +extern unsigned char D_80113C7C[]; +extern unsigned char * func_80141CA4(void); +extern void func_80142414(s32 a0, s16 a1); +extern void func_80142454(s32 a0); +extern void func_801424E4(short *param_1); +extern void func_801425CC(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern s32 func_8012AD50(void *a0); +extern void func_80142608(s32 param_1); +extern void func_801426D4(s32 a0); +extern void func_80142740(int param_1); +extern void func_80142778(u8 *a1); +extern void func_801427DC(void); +extern void func_801427E4(void); +extern void func_801427EC(int param_1); +extern s32 func_80142DB8(s32 *a0); +extern s32 func_80142D38(s32 *a0); +extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); +extern void func_801428CC(s32 *a0); +extern void func_8014292C(int param_1); +extern void func_80142978(int param_1); +extern void func_801429C4(int param_1); +extern void func_80142A80(void); +extern void func_80142C7C(void); +extern void func_80142C84(s32 a0); +extern void func_80142C9C(s32 * arg0); +extern void func_80142B2C(void *arg0); +extern void func_80142DC4(int param_1); +extern void func_80142E38(int param_1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_80142EC0(s32 param_1); +extern void func_80142FFC(s32 *a0); +extern void func_8014305C(int param_1); +extern void func_80143188(s32 *a0); +extern int func_8001CA88(int, void *); +extern void func_800233CC(void *, unsigned short); +extern void func_801431E8(s32 param_1); +extern void func_80142C9C(s32 *a0); +extern void func_801432FC(s32 *a0); +extern void func_80143390(s32 *a0); +extern void func_80143458(s32 param_1); +extern void func_8014358C(s32 param_1); +extern s32 rand(void); +extern void func_80143640(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80143970(s32 a0); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_80143994(s32 a0, s32 a1); +extern void func_801439C0(u8 *a0); +extern s16 D_801152AC; +extern s16 D_801152AA; +extern void func_801439FC(s32 a0); +extern void func_80143B30(void *a0); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80143B6C(s32 arg0, s32 arg1); +extern void func_80143BDC(u16 *a0); +extern void func_80143C38(void *a0); +extern void func_80143C74(s32 a0, s32 a1); +extern void func_80143C98(void *a0); +extern void func_80143E68(void *a0); +extern void func_80143EA4(void); +extern void func_80143EAC(void); +extern void func_80143EB4(void); +extern s32 func_8004787C(s32 a0); +extern void func_80143EBC(s32 a0); +extern void func_80144054(void *a0); +extern void func_801442F8(int param_1); +extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80144364(int param_1); +extern u8 D_800D387C[]; +extern u8 D_800D3888[]; +extern void func_80144558(u8 *param_1); +extern void func_801446A4(int param_1); +extern void func_8014477C(void *param_1); +extern void func_80144880(s32 param_1); +extern void func_80144988(s32 a0); +extern void func_801449C8(void *a0); +extern void func_80144A04(s32 *a0); +extern void func_80144A2C(void *a0); +extern void func_80144A68(s32 *a0); +extern void func_80144A90(void); +extern void func_80144A98(u8 *a0); +extern void func_80144B14(void); +extern void func_80144AEC(s32 *a0); +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern void func_80145B24(void); +extern void func_80145934(void); +extern void func_80145A2C(void); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_80078EC0; +extern void func_80145BF8(void); +extern void func_80145C54(void); +extern void func_80146014(s32 a0); +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C3C(u8 *a0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern volatile s32 D_80127090; +extern volatile s32 D_80127094; +extern volatile s32 D_80127098; +extern void func_80147F78(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80148038(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148D44(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 func_80149FB0(s32 a0); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8014A1B0(s32 a0, s32 a1); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern u8 D_80078E78[]; +extern s32 func_8016F1C4(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_8014BD60(s32 a0, s32 a1); +extern void func_8014B084(void); +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 a0, s32 a1, void* a2); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern void func_8014DF94(s32 arg0); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); /* canonical (engine_core.h:11555) */ +extern s32 func_8014E284(s32 a0, s16 *arg1, s16 *arg2); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E48C(s32 a0); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014ED80(struct SubED80 *a0); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014F4C0(u8 *a0); +extern void func_8014F468(void); +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern void func_8014FA04(s32 a0); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern s32 func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_801502EC(s32 e, void *a1, void *a2); +extern s32 func_80150460(s32 e, s32 a1); +extern s32 func_80150170(void *e); +extern s32 func_80150460(s32 a, s32 b); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern void func_801504D8(u16 *a0); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B28(int param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void func_80152C80(s32* a0); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern u8 D_80062C04[]; +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154B4C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_80157808(s32 a0); +extern void func_801577C8(int param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +/* ==== end §8b carried decl layer ==== */ + + + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_801852D0[])(void); + extern int D_801C6698; + extern int D_801C669C; + extern int D_801C66A0; + extern int D_801C66A4; + extern int D_801C66A8; + short sVar1; + + D_801852D0[*(unsigned short *)(param_1 + 2)](); + switch (D_801C6698) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801C66A0 = 0; + D_801C669C = 0x46; + D_801C6698 += 1; + break; + case 2: + if (D_801C669C == 0) { + if (SsGetMute() == 0) { + D_801C6698 += 1; + } + } else { + D_801C669C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801C6698 += 1; + } + break; + case 4: + D_801C66A4 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801C669C = 0xd2; + } else { + D_801C669C = 1; + } + break; + case 5: + D_801C669C -= 1; + if (D_801C669C == -1 || D_801C66A8 != 0) { + D_801C669C = 0; + D_801C6698 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801C669C = 0x28; + D_801C6698 += 1; + break; + case 7: + if (D_801C669C == 0) { + if (SsGetMute() == 0) { + D_801C6698 += 1; + } + } else { + D_801C669C -= 1; + } + break; + case 8: + D_801C66A0 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158ab4 (src/shared) */ + + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158ae4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); + +void func_80158BB0(void *arg0) { + + extern M2C_UNK D_800D58D8; + extern s32 D_801C6698; + if (D_801C6698 == 0) { + D_801C6698 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158c40 (src/shared) */ + + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158cd8 (src/shared) */ + + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158d60 (src/shared) */ + + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158e24 (src/shared) */ + + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + + extern s32 D_801C66A4; + extern s32 D_801852A0[]; + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801C66A4; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801852A0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + + extern s32 D_801C66A8; + extern u8 D_80110C3C[]; + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801C66A8 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592cc (src/shared) */ + + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); + +void func_8015934C(void *arg0) { + + extern u8 D_800AE6BD; + extern s32 D_801C6698; + extern s32 D_801C66A0; + void *temp_v1; + + if (D_801C6698 == 4) { + D_801C6698 = 5; + } + if (D_801C66A0 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593e4 (src/shared) */ + + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + + +s32 func_80159464(void) { + + extern Entry D_80185308[]; + Entry *e; + + e = D_80185308; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_801588CC", func_801594E8); + + + +void func_80159698(void *a0) { + + extern void (*D_8018551C[])(void); + D_8018551C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596d4 (src/shared) */ + + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8018533C)); + func_80028620(1, &(*(u8 *)&D_8018533C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8018533C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987c (src/shared) */ + + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598bc (src/shared) */ + + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598e0 (src/shared) */ + + + + +void func_80159968(void *a0) { + + extern void (*D_801855C0[])(void); + D_801855C0[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599e0 (src/shared) */ + + +void func_80159A18(void) { +} + +INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159b08 (src/shared) */ + + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159b3c (src/shared) */ + + + + +void func_80159B70(void *a0) { + + extern void (*D_80185714[])(void); + D_80185714[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159bac (src/shared) */ + + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + + +void func_80159BE4(s32 arg0) +{ + + extern unsigned char D_80185530; + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80185530); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + +INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_801588CC", func_80159C84); + +DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015a1c8 (src/shared) */ + + +DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */ + + +DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */ + + + + +void func_8015A264(void *a0) { + + extern void (*D_8018571C[])(void); + D_8018571C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */ + + + +// @class: other +// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay + + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern void func_801553A8(s32 *a0); +extern s32 func_80172608(u8 *a0); +extern void func_80146CA0(void *a0); + +void func_8015A2D8(s32 param_1) +{ + + extern int D_80185540; + unsigned char bVar1; + + ((void (*)(int, int *))func_80146DB8)(param_1, &D_80185540); + if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) { + func_80154150(param_1, 10); + func_80154A74(param_1, 0x1c); + *(int *)(param_1 + 0x2c) = 0xfffc0000; + goto LAB_8015a38c; + } + bVar1 = *(unsigned char *)(param_1 + 0xa9); + switch (bVar1) { + case 0x41: + func_80154150(param_1, 7); + break; + case 0x53: + case 0x73: + func_80154150(param_1, 6); + break; + default: + *(int *)(param_1 + 0x23c) = 0; + goto LAB_8015a390; + } + func_80154A74(param_1, 0x21); +LAB_8015a38c: + *(int *)(param_1 + 0x23c) = 0; +LAB_8015a390: + func_8014C010(param_1, 2); + ((void (*)(int))func_801553A8)(param_1); + ((void (*)(int))func_80172608)(param_1); + ((void (*)(int))func_80146CA0)(param_1); + return; +} + + +INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_801588CC", func_8015A3C8); + +DEFINE_func_8015AB7C() /* dedup: shared engine-core @0x8015ab7c (src/shared) */ + + +DEFINE_func_8015ABD4() /* dedup: shared engine-core @0x8015abd4 (src/shared) */ + + + +// @class: plumbing +// @stuck: none — MATCH (param held in $s0 across 3 calls; lhu 0x16E; &D_80185560 arg) +extern void func_80154150(s32 a0, s32 a1); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern s32 func_80161CD0(s32 a0, s32 a1); + +void func_8015AC48(s32 arg0) +{ + + extern M2C_UNK D_80185560; + func_80154150(arg0, 9); + func_80146DB8((s32 *)arg0, &D_80185560); + func_80161CD0(arg0, M2C_FIELD(arg0, u16 *, 0x16E)); +} + + +DEFINE_func_8015AC90() /* dedup: shared engine-core @0x8015ac90 (src/shared) */ + + +DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015acc4 (src/shared) */ + + +DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015ad08 (src/shared) */ + + + + +void func_8015AD3C(void *a0) { + + extern void (*D_80185724[])(void); + D_80185724[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015ad78 (src/shared) */ + + +DEFINE_func_8015ADB0() /* dedup: shared engine-core @0x8015adb0 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_801588CC", func_8015AE2C); + +DEFINE_func_8015B6F4() /* dedup: shared engine-core @0x8015b6f4 (src/shared) */ + + +DEFINE_func_8015B7B4() /* dedup: shared engine-core @0x8015b7b4 (src/shared) */ + + +DEFINE_func_8015B858() /* dedup: shared engine-core @0x8015b858 (src/shared) */ + + +DEFINE_func_8015B8F8() /* dedup: shared engine-core @0x8015b8f8 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_801588CC", func_8015B950); + +DEFINE_func_8015BD8C() /* dedup: shared engine-core @0x8015bd8c (src/shared) */ + + +DEFINE_func_8015BDD0() /* dedup: shared engine-core @0x8015bdd0 (src/shared) */ + + +DEFINE_func_8015BE04() /* dedup: shared engine-core @0x8015be04 (src/shared) */ + + + + +void func_8015BE38(struct Obj *a0) { + + extern void (*D_80185740[])(void); + D_80185740[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_8015BE74() /* dedup: shared engine-core @0x8015be74 (src/shared) */ + + +DEFINE_func_8015BE94() /* dedup: shared engine-core @0x8015be94 (src/shared) */ + + +DEFINE_func_8015BEC4() /* dedup: shared engine-core @0x8015bec4 (src/shared) */ + + +DEFINE_func_8015BEE4() /* dedup: shared engine-core @0x8015bee4 (src/shared) */ + + +DEFINE_func_8015BF04() /* dedup: shared engine-core @0x8015bf04 (src/shared) */ + + +DEFINE_func_8015BF48() /* dedup: shared engine-core @0x8015bf48 (src/shared) */ + + +DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015bf7c (src/shared) */ + + +DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015bfb0 (src/shared) */ + + + + +void func_8015BFF4(void *a0) { + + extern void (*D_8018574C[])(void); + D_8018574C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_801588CC", func_8015C030); + +DEFINE_func_8015C08C() /* dedup: shared engine-core @0x8015c08c (src/shared) */ + + +DEFINE_func_8015C0C4() /* dedup: shared engine-core @0x8015c0c4 (src/shared) */ + + +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern void func_80146CA0(void *a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147324(s32 a0); +extern void func_801473EC(s32 *a0); +extern void func_80147A84(s32 arg0); +extern int func_80148AFC(void *a0); +extern s32 func_80149FB0(s32 a0); +extern void func_8014C010(s32 a0, s32 a1); +extern void func_8014CC28(s32 a0); +extern void func_8014D738(void); +extern void func_8014F3E8(s32 a0); +extern s32 func_8015BE94(); +extern void func_8015C0C4(s32 a0); + + + +s32 func_8015C128(s32 param_1) { + + extern u16 D_800B99DA; + extern void func_8015C6E0(int); + extern void (*D_801855CC[])(int); + + int sp10[3]; + int sp20[3]; + int temp_s0; + int temp_v0; + + ((void(*)())func_80149FB0)(); + if (((int(*)(int))func_80148AFC)(((int)param_1)) & 0xFF) { + sp10[0] = 0; + sp10[1] = 0; + sp10[2] = -0x4000; + ((void(*)(int, int *, int *))func_8001382C)(*(short *)(*(int *)(((int)param_1) + 0x20) + 0x12), sp10, sp20); + *(int *)(((int)param_1) + 0x234) += sp20[0]; + *(int *)(((int)param_1) + 0x238) += sp20[1]; + *(int *)(((int)param_1) + 0x23C) += sp20[2]; + } + ((void(*)(int, int *, int *))func_8001382C)((short)(-*(unsigned short *)(*(int *)(((int)param_1) + 0x20) + 0x12)), + (int *)(((int)param_1) + 0x234), sp20); + ((void(*)(int, int *))func_80146DB8)(((int)param_1), sp20); + func_80147A84(((int)param_1)); + ((void(*)(int))func_801473EC)(((int)param_1)); + if (!(D_800B99DA & 3)) { + ((void(*)(int, int))func_8014C010)(((int)param_1), 1); + ((void(*)(int))func_80147324)(0x65F); + } + if (((int(*)(int))func_8014D738)(((int)param_1)) != 0) { + D_801855CC[*(u16 *)((int)param_1)](((int)param_1)); + func_8015C6E0(((int)param_1)); + return; + } + temp_s0 = ((int(*)(int))func_8014CC28)(((int)param_1)); + temp_v0 = ((int(*)(int))func_8014F3E8)(((int)param_1)); + if (temp_v0 != 0) { + if ((temp_v0 & 0xFF00) != 0x4000) { + ((void(*)(int, int))func_80146E90)(((int)param_1), 6); + ((void(*)(int))func_80146CA0)(((int)param_1)); + return; + } + if ((temp_v0 & 0x4000) && ((int(*)(int))func_80146E98)(((int)param_1)) != 0) { + ((void(*)(int, int))func_80147078)(((int)param_1), 4); + ((void(*)(int))func_8015C0C4)(((int)param_1)); + } + } else if (temp_s0 == 0) { + D_801855CC[*(u16 *)((int)param_1)](((int)param_1)); + ((void(*)(int, int))func_80147078)(((int)param_1), 3); + ((void(*)(int))func_8015BE94)(((int)param_1)); + } +} + + diff --git a/src/ov_SC07_008/ov_SC07_008_jr_80154C24.c b/src/ov_SC07_008/ov_SC07_008_jr_80154C24.c index 01c2e9aa3..530e07037 100644 --- a/src/ov_SC07_008/ov_SC07_008_jr_80154C24.c +++ b/src/ov_SC07_008/ov_SC07_008_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8017F69C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_80195470; - -void func_80158BB0(void *arg0) { - if (D_80195470 == 0) { - D_80195470 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_8019547C; -extern s32 D_8017F670[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8019547C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8017F670[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_80195480; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_80195480 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_80195470; -extern s32 D_80195478; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_80195470 == 4) { - D_80195470 = 5; - } - if (D_80195478 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8017F6D8[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8017F6D8; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_80154C24", func_801594E8); - - -extern void (*D_8017F8EC[])(void); - -void func_80159698(void *a0) { - D_8017F8EC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8017F70C)); - func_80028620(1, &(*(u8 *)&D_8017F70C) + 0x10); - func_80028620(2, &(*(u8 *)&D_8017F70C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8017F990[])(void); - -void func_80159968(void *a0) { - D_8017F990[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8017FAE4[])(void); - -void func_80159B70(void *a0) { - D_8017FAE4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8017F900; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8017F900); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC07_008/ov_SC07_008_jr_801588CC.c b/src/ov_SC07_008/ov_SC07_008_jr_801588CC.c new file mode 100644 index 000000000..48985d211 --- /dev/null +++ b/src/ov_SC07_008/ov_SC07_008_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_8017F838; +extern u8 D_8017F7A8; +extern u8 D_8017F784; +extern u8 D_8017F760; +extern u8 D_8017F814; +extern u8 D_8017F7F0; +extern u8 D_8017F7CC; +extern u8 D_8017F73C; +extern void func_80145934(void); +extern u8 D_8017F8C8; +extern u8 D_8017F8A4; +extern u8 D_8017F880; +extern u8 D_8017F85C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8017ECC0[]; +extern unsigned char D_8017ECF0[]; +extern unsigned char D_8017ED40[]; +extern unsigned char D_8017ED70[]; +extern unsigned char D_8017EDA0[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8017EDF0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8017EEB8[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8017EF40[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8017EF48; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_80195430; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_80195434; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8017EF78; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8017F020[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8017F044[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8017F034; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8017F058[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8017F064[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8017F074[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8017F08C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017F07C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8017F0A0[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8017F0BC[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017F0AC; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8017F0D0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8017F0E4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8017F0F8; +extern void (*D_8017F120[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017F100; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8017F12C[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8017F16C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8017F170[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8017F364[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_8017F5D4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_8017F5E4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_80195468; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8017F60C[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_8017F5EC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_8017F5FC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_8017F64C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_8017F654[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8017F620; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_8017F660[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_8017F630; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_80195470; +extern s32 D_8019547C; +extern s32 D_80195480; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8017F69C[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_80195470; +extern int D_8019547C; +extern int D_80195480; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_8017F6A0[])(void); + extern int D_80195474; + extern int D_80195478; + short sVar1; + + D_8017F6A0[*(unsigned short *)(param_1 + 2)](); + switch (D_80195470) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_80195478 = 0; + D_80195474 = 0x46; + D_80195470 += 1; + break; + case 2: + if (D_80195474 == 0) { + if (SsGetMute() == 0) { + D_80195470 += 1; + } + } else { + D_80195474 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_80195470 += 1; + } + break; + case 4: + D_8019547C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_80195474 = 0xd2; + } else { + D_80195474 = 1; + } + break; + case 5: + D_80195474 -= 1; + if (D_80195474 == -1 || D_80195480 != 0) { + D_80195474 = 0; + D_80195470 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_80195474 = 0x28; + D_80195470 += 1; + break; + case 7: + if (D_80195474 == 0) { + if (SsGetMute() == 0) { + D_80195470 += 1; + } + } else { + D_80195474 -= 1; + } + break; + case 8: + D_80195478 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_80195470; + +void func_80158BB0(void *arg0) { + if (D_80195470 == 0) { + D_80195470 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_8019547C; +extern s32 D_8017F670[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8019547C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_8017F670[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_80195480; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_80195480 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_80195470; +extern s32 D_80195478; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_80195470 == 4) { + D_80195470 = 5; + } + if (D_80195478 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8017F6D8[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8017F6D8; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_801588CC", func_801594E8); + + +extern void (*D_8017F8EC[])(void); + +void func_80159698(void *a0) { + D_8017F8EC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_8017F70C)); + func_80028620(1, &(*(u8 *)&D_8017F70C) + 0x10); + func_80028620(2, &(*(u8 *)&D_8017F70C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_8017F990[])(void); + +void func_80159968(void *a0) { + D_8017F990[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_8017FAE4[])(void); + +void func_80159B70(void *a0) { + D_8017FAE4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_8017F900; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_8017F900); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC07_009/ov_SC07_009_jr_80154C24.c b/src/ov_SC07_009/ov_SC07_009_jr_80154C24.c index cefbcbc51..81ff873fe 100644 --- a/src/ov_SC07_009/ov_SC07_009_jr_80154C24.c +++ b/src/ov_SC07_009/ov_SC07_009_jr_80154C24.c @@ -1576,342 +1576,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180140[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801A2B00; - -void func_80158BB0(void *arg0) { - if (D_801A2B00 == 0) { - D_801A2B00 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801A2B0C; -extern s32 D_80180114[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A2B0C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180114[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801A2B10; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A2B10 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801A2B00; -extern s32 D_801A2B08; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801A2B00 == 4) { - D_801A2B00 = 5; - } - if (D_801A2B08 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018017C[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018017C; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_80154C24", func_801594E8); - - -extern void (*D_80180390[])(void); - -void func_80159698(void *a0) { - D_80180390[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801801B0)); - func_80028620(1, &(*(u8 *)&D_801801B0) + 0x10); - func_80028620(2, &(*(u8 *)&D_801801B0) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_80180434[])(void); - -void func_80159968(void *a0) { - D_80180434[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_80180588[])(void); - -void func_80159B70(void *a0) { - D_80180588[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_801803A4; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801803A4); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - diff --git a/src/ov_SC07_009/ov_SC07_009_jr_801588CC.c b/src/ov_SC07_009/ov_SC07_009_jr_801588CC.c new file mode 100644 index 000000000..f03442768 --- /dev/null +++ b/src/ov_SC07_009/ov_SC07_009_jr_801588CC.c @@ -0,0 +1,1515 @@ +#include "common.h" +#include "../shared/engine_core.h" + + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +struct Ent_801506A4 { + unsigned short unk0; /* 0x0 */ + char pad[0x5A]; + unsigned short unk5C; /* 0x5C */ + char pad2[0x12]; + short unk70; /* 0x70 */ +}; +typedef struct actor4c { + u8 pad00[0x20]; + struct actor4c *unk20; /* 0x20 */ + u8 pad24[0x44 - 0x24]; + u32 unk44; /* 0x44 */ + u8 pad48[0xB4 - 0x48]; + s32 *unkB4; /* 0xB4 command-stream pointer */ + s16 unkB8; /* 0xB8 countdown timer */ + s16 unkBA; /* 0xBA */ + u8 unkBC; /* 0xBC program counter */ + u8 unkBD; /* 0xBD */ + u8 padBE[0xDC - 0xBE]; + u8 unkDC; /* 0xDC */ + u8 padDD[0x1A8 - 0xDD]; + u8 unk1A8; /* 0x1A8 */ +} Actor4C; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_801802DC; +extern u8 D_8018024C; +extern u8 D_80180228; +extern u8 D_80180204; +extern u8 D_801802B8; +extern u8 D_80180294; +extern u8 D_80180270; +extern u8 D_801801E0; +extern void func_80145934(void); +extern u8 D_8018036C; +extern u8 D_80180348; +extern u8 D_80180324; +extern u8 D_80180300; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_8017F764[]; +extern unsigned char D_8017F794[]; +extern unsigned char D_8017F7E4[]; +extern unsigned char D_8017F814[]; +extern unsigned char D_8017F844[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_8017F894[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8017F95C[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_8017F9E4[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_8017F9EC; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801A2AC0; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801A2AC4; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_8017FA1C; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_8017FAC4[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_8017FAE8[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_8017FAD8; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_8017FAFC[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_8017FB08[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_8017FB18[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8017FB30[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8017FB20; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_8017FB44[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8017FB60[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8017FB50; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_8017FB74[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_8017FB88[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_8017FB9C; +extern void (*D_8017FBC4[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8017FBA4; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void StoreImage(s32, void *); +extern void func_80154B4C(u8 *a0, s32 a1); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern u8 D_80126738; +extern u8 D_80126748; +extern u8 D_80126838; +extern u8 D_80126848; +extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern ImgRect8 D_8017FBD0[]; +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80029178(s32); +extern int (*D_8017FC10[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_8017FC14[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC D_8017FE08[]; +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80180078[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80180088[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801A2AF8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_801800B0[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80180090; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_801800A0; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_801800F0[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_801800F8[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_801800C4; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80180104[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_801800D4; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801A2B00; +extern s32 D_801A2B0C; +extern s32 D_801A2B10; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80180140[])(s32 *); +/* ==== end §8b carried decl layer ==== */ + + +extern int D_801A2B00; +extern int D_801A2B0C; +extern int D_801A2B10; + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80180144[])(void); + extern int D_801A2B04; + extern int D_801A2B08; + short sVar1; + + D_80180144[*(unsigned short *)(param_1 + 2)](); + switch (D_801A2B00) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A2B08 = 0; + D_801A2B04 = 0x46; + D_801A2B00 += 1; + break; + case 2: + if (D_801A2B04 == 0) { + if (SsGetMute() == 0) { + D_801A2B00 += 1; + } + } else { + D_801A2B04 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A2B00 += 1; + } + break; + case 4: + D_801A2B0C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A2B04 = 0xd2; + } else { + D_801A2B04 = 1; + } + break; + case 5: + D_801A2B04 -= 1; + if (D_801A2B04 == -1 || D_801A2B10 != 0) { + D_801A2B04 = 0; + D_801A2B00 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A2B04 = 0x28; + D_801A2B00 += 1; + break; + case 7: + if (D_801A2B04 == 0) { + if (SsGetMute() == 0) { + D_801A2B00 += 1; + } + } else { + D_801A2B04 -= 1; + } + break; + case 8: + D_801A2B08 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern M2C_UNK D_800D58D8; +extern s32 D_801A2B00; + +void func_80158BB0(void *arg0) { + if (D_801A2B00 == 0) { + D_801A2B00 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + +extern s32 D_801A2B0C; +extern s32 D_80180114[]; + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A2B0C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80180114[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + +extern s32 D_801A2B10; +extern u8 D_80110C3C[]; + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A2B10 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); +extern u8 D_800AE6BD; +extern s32 D_801A2B00; +extern s32 D_801A2B08; + +void func_8015934C(void *arg0) { + void *temp_v1; + + if (D_801A2B00 == 4) { + D_801A2B00 = 5; + } + if (D_801A2B08 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + +extern Entry D_8018017C[]; + +s32 func_80159464(void) { + Entry *e; + + e = D_8018017C; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_801588CC", func_801594E8); + + +extern void (*D_80180390[])(void); + +void func_80159698(void *a0) { + D_80180390[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801801B0)); + func_80028620(1, &(*(u8 *)&D_801801B0) + 0x10); + func_80028620(2, &(*(u8 *)&D_801801B0) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ + + +extern void (*D_80180434[])(void); + +void func_80159968(void *a0) { + D_80180434[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ + +DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ + +INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ + + +extern void (*D_80180588[])(void); + +void func_80159B70(void *a0) { + D_80180588[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + +extern unsigned char D_801803A4; + +void func_80159BE4(s32 arg0) +{ + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801803A4); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + diff --git a/src/ov_SC07_010/ov_SC07_010_jr_80154C24.c b/src/ov_SC07_010/ov_SC07_010_jr_80154C24.c index 8d3516554..26c8b8f7f 100644 --- a/src/ov_SC07_010/ov_SC07_010_jr_80154C24.c +++ b/src/ov_SC07_010/ov_SC07_010_jr_80154C24.c @@ -1936,646 +1936,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_8018435C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158ab4 (src/shared) */ - - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158ae4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); - -void func_80158BB0(void *arg0) { - - extern M2C_UNK D_800D58D8; - extern s32 D_801A6B90; - if (D_801A6B90 == 0) { - D_801A6B90 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158c40 (src/shared) */ - - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158cd8 (src/shared) */ - - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158d60 (src/shared) */ - - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158e24 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - - extern s32 D_801A6B9C; - extern s32 D_80184330[]; - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801A6B9C; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_80184330[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - - extern s32 D_801A6BA0; - extern u8 D_80110C3C[]; - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801A6BA0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592cc (src/shared) */ - - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); - -void func_8015934C(void *arg0) { - - extern u8 D_800AE6BD; - extern s32 D_801A6B90; - extern s32 D_801A6B98; - void *temp_v1; - - if (D_801A6B90 == 4) { - D_801A6B90 = 5; - } - if (D_801A6B98 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593e4 (src/shared) */ - - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - - -s32 func_80159464(void) { - - extern Entry D_80184398[]; - Entry *e; - - e = D_80184398; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_80154C24", func_801594E8); - - - -void func_80159698(void *a0) { - - extern void (*D_801845AC[])(void); - D_801845AC[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596d4 (src/shared) */ - - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_801843CC)); - func_80028620(1, &(*(u8 *)&D_801843CC) + 0x10); - func_80028620(2, &(*(u8 *)&D_801843CC) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987c (src/shared) */ - - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598bc (src/shared) */ - - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598e0 (src/shared) */ - - - - -void func_80159968(void *a0) { - - extern void (*D_80184650[])(void); - D_80184650[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599e0 (src/shared) */ - - -void func_80159A18(void) { -} - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159b08 (src/shared) */ - - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159b3c (src/shared) */ - - - - -void func_80159B70(void *a0) { - - extern void (*D_801847A4[])(void); - D_801847A4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159bac (src/shared) */ - - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - - -void func_80159BE4(s32 arg0) -{ - - extern unsigned char D_801845C0; - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_801845C0); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_80154C24", func_80159C84); - -DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015a1c8 (src/shared) */ - - -DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */ - - -DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */ - - - - -void func_8015A264(void *a0) { - - extern void (*D_801847AC[])(void); - D_801847AC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay - - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_801553A8(s32 *a0); -extern s32 func_80172608(u8 *a0); -extern void func_80146CA0(void *a0); - -void func_8015A2D8(s32 param_1) -{ - - extern int D_801845D0; - unsigned char bVar1; - - ((void (*)(int, int *))func_80146DB8)(param_1, &D_801845D0); - if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) { - func_80154150(param_1, 10); - func_80154A74(param_1, 0x1c); - *(int *)(param_1 + 0x2c) = 0xfffc0000; - goto LAB_8015a38c; - } - bVar1 = *(unsigned char *)(param_1 + 0xa9); - switch (bVar1) { - case 0x41: - func_80154150(param_1, 7); - break; - case 0x53: - case 0x73: - func_80154150(param_1, 6); - break; - default: - *(int *)(param_1 + 0x23c) = 0; - goto LAB_8015a390; - } - func_80154A74(param_1, 0x21); -LAB_8015a38c: - *(int *)(param_1 + 0x23c) = 0; -LAB_8015a390: - func_8014C010(param_1, 2); - ((void (*)(int))func_801553A8)(param_1); - ((void (*)(int))func_80172608)(param_1); - ((void (*)(int))func_80146CA0)(param_1); - return; -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_80154C24", func_8015A3C8); - -DEFINE_func_8015AB7C() /* dedup: shared engine-core @0x8015ab7c (src/shared) */ - - -DEFINE_func_8015ABD4() /* dedup: shared engine-core @0x8015abd4 (src/shared) */ - - - -// @class: plumbing -// @stuck: none — MATCH (param held in $s0 across 3 calls; lhu 0x16E; &D_801845F0 arg) -extern void func_80154150(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80161CD0(s32 a0, s32 a1); - -void func_8015AC48(s32 arg0) -{ - - extern M2C_UNK D_801845F0; - func_80154150(arg0, 9); - func_80146DB8((s32 *)arg0, &D_801845F0); - func_80161CD0(arg0, M2C_FIELD(arg0, u16 *, 0x16E)); -} - - -DEFINE_func_8015AC90() /* dedup: shared engine-core @0x8015ac90 (src/shared) */ - - -DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015acc4 (src/shared) */ - - -DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015ad08 (src/shared) */ - - - - -void func_8015AD3C(void *a0) { - - extern void (*D_801847B4[])(void); - D_801847B4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015ad78 (src/shared) */ - - -DEFINE_func_8015ADB0() /* dedup: shared engine-core @0x8015adb0 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_80154C24", func_8015AE2C); - -DEFINE_func_8015B6F4() /* dedup: shared engine-core @0x8015b6f4 (src/shared) */ - - -DEFINE_func_8015B7B4() /* dedup: shared engine-core @0x8015b7b4 (src/shared) */ - - -DEFINE_func_8015B858() /* dedup: shared engine-core @0x8015b858 (src/shared) */ - - -DEFINE_func_8015B8F8() /* dedup: shared engine-core @0x8015b8f8 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_80154C24", func_8015B950); - -DEFINE_func_8015BD8C() /* dedup: shared engine-core @0x8015bd8c (src/shared) */ - - -DEFINE_func_8015BDD0() /* dedup: shared engine-core @0x8015bdd0 (src/shared) */ - - -DEFINE_func_8015BE04() /* dedup: shared engine-core @0x8015be04 (src/shared) */ - - - - -void func_8015BE38(struct Obj *a0) { - - extern void (*D_801847D0[])(void); - D_801847D0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015BE74() /* dedup: shared engine-core @0x8015be74 (src/shared) */ - - -DEFINE_func_8015BE94() /* dedup: shared engine-core @0x8015be94 (src/shared) */ - - -DEFINE_func_8015BEC4() /* dedup: shared engine-core @0x8015bec4 (src/shared) */ - - -DEFINE_func_8015BEE4() /* dedup: shared engine-core @0x8015bee4 (src/shared) */ - - -DEFINE_func_8015BF04() /* dedup: shared engine-core @0x8015bf04 (src/shared) */ - - -DEFINE_func_8015BF48() /* dedup: shared engine-core @0x8015bf48 (src/shared) */ - - -DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015bf7c (src/shared) */ - - -DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015bfb0 (src/shared) */ - - - - -void func_8015BFF4(void *a0) { - - extern void (*D_801847DC[])(void); - D_801847DC[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_80154C24", func_8015C030); - -DEFINE_func_8015C08C() /* dedup: shared engine-core @0x8015c08c (src/shared) */ - - -DEFINE_func_8015C0C4() /* dedup: shared engine-core @0x8015c0c4 (src/shared) */ - - -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147324(s32 a0); -extern void func_801473EC(s32 *a0); -extern void func_80147A84(s32 arg0); -extern int func_80148AFC(void *a0); -extern s32 func_80149FB0(s32 a0); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_8014CC28(s32 a0); -extern void func_8014D738(void); -extern void func_8014F3E8(s32 a0); -extern s32 func_8015BE94(); -extern void func_8015C0C4(s32 a0); - - - -s32 func_8015C128(s32 param_1) { - - extern u16 D_800B99DA; - extern void func_8015C6E0(int); - extern void (*D_8018465C[])(int); - - int sp10[3]; - int sp20[3]; - int temp_s0; - int temp_v0; - - ((void(*)())func_80149FB0)(); - if (((int(*)(int))func_80148AFC)(((int)param_1)) & 0xFF) { - sp10[0] = 0; - sp10[1] = 0; - sp10[2] = -0x4000; - ((void(*)(int, int *, int *))func_8001382C)(*(short *)(*(int *)(((int)param_1) + 0x20) + 0x12), sp10, sp20); - *(int *)(((int)param_1) + 0x234) += sp20[0]; - *(int *)(((int)param_1) + 0x238) += sp20[1]; - *(int *)(((int)param_1) + 0x23C) += sp20[2]; - } - ((void(*)(int, int *, int *))func_8001382C)((short)(-*(unsigned short *)(*(int *)(((int)param_1) + 0x20) + 0x12)), - (int *)(((int)param_1) + 0x234), sp20); - ((void(*)(int, int *))func_80146DB8)(((int)param_1), sp20); - func_80147A84(((int)param_1)); - ((void(*)(int))func_801473EC)(((int)param_1)); - if (!(D_800B99DA & 3)) { - ((void(*)(int, int))func_8014C010)(((int)param_1), 1); - ((void(*)(int))func_80147324)(0x65F); - } - if (((int(*)(int))func_8014D738)(((int)param_1)) != 0) { - D_8018465C[*(u16 *)((int)param_1)](((int)param_1)); - func_8015C6E0(((int)param_1)); - return; - } - temp_s0 = ((int(*)(int))func_8014CC28)(((int)param_1)); - temp_v0 = ((int(*)(int))func_8014F3E8)(((int)param_1)); - if (temp_v0 != 0) { - if ((temp_v0 & 0xFF00) != 0x4000) { - ((void(*)(int, int))func_80146E90)(((int)param_1), 6); - ((void(*)(int))func_80146CA0)(((int)param_1)); - return; - } - if ((temp_v0 & 0x4000) && ((int(*)(int))func_80146E98)(((int)param_1)) != 0) { - ((void(*)(int, int))func_80147078)(((int)param_1), 4); - ((void(*)(int))func_8015C0C4)(((int)param_1)); - } - } else if (temp_s0 == 0) { - D_8018465C[*(u16 *)((int)param_1)](((int)param_1)); - ((void(*)(int, int))func_80147078)(((int)param_1), 3); - ((void(*)(int))func_8015BE94)(((int)param_1)); - } -} - diff --git a/src/ov_SC07_010/ov_SC07_010_jr_801588CC.c b/src/ov_SC07_010/ov_SC07_010_jr_801588CC.c new file mode 100644 index 000000000..fefdcc633 --- /dev/null +++ b/src/ov_SC07_010/ov_SC07_010_jr_801588CC.c @@ -0,0 +1,2079 @@ +#include "common.h" +#include "../shared/engine_core.h" + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +typedef struct { s32 a, b, c; } Rec12; +typedef struct { s32 a, b; s8 c; } __attribute__((packed, aligned(1))) Rec9; +typedef struct { s32 f0; } E4; +typedef struct { u16 f0; s16 f2; } Prim4; +typedef struct { s16 x; s16 y; } Hw4; +typedef struct { s32 f0; u32 *f4; s32 f8; s32 fC; s32 f10; } Rec20; +typedef struct { u8 d[0x60]; } Blk60; +typedef struct { s16 unk0, unk2, unk4, unk6; } Vec8; +extern void func_80016714(void *a0, s32 a1); +extern void func_8013C98C(void); +extern void func_80019064(void *a0); +extern void func_8013C9C4(void * arg0); +extern void func_8013CA14(void); +extern void func_8013CABC(void); +extern void func_8013CAE8(void); +extern void func_8013CB20(void); +extern void func_8013CB5C(void); +extern s16 currentLocationId; +extern void func_8013DBE4(); +extern void func_8013D9B0(); +extern void func_8013D330(void); +extern void func_8013D178(void); +extern void func_8013CF68(void); +extern void func_8013CB84(void); +extern void func_8013CF68(); +extern void func_8013D064(void); +extern s32 func_8013D13C(void); +extern void func_8013D164(void); +extern void func_8013D53C(void); +extern void func_8013DD68(void); +extern void func_8013D8FC(void); +extern void func_8013D3D4(int param_1, int param_2); +extern void func_800599B8(s32 a0, s32 a1); +extern void func_8013D9B0(int param_1); +extern void func_8013DBE4(int param_1); +extern s32 func_8013E054(void); +extern int SquareRoot12(int a0); +extern int func_8013E064(s16 *a0, s16 *a1); +extern int func_8013E0FC(s16 *a0, s16 *a1); +extern int func_8013E194(s16 *a0, s16 *a1); +extern void Square12(s32 *a0, s32 *a1); +extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); +extern s16 D_80126CB0; +extern s32 func_8013E298(s16 *a0); +extern s16 D_80126CAC; +extern short D_80126CAE; +extern int func_8013E2C4(short *a0); +extern void *D_801274CC; +extern s32 func_8013E410(void); +extern s32 func_8013E448(s32 a0); +extern void func_8012C724(s32 a0, s32 a1); +extern void func_8013E370(void); +extern u8 D_801202A0[]; +extern s32 (*D_801274D0)(s32); +extern s32 D_801274D8; +extern s32 D_801274DC; +extern s32 func_800132BC(s32 a0, s32 a1); +extern s32 func_8013E448(s32 param_1); +extern void func_800D24A0(s32 a0); +extern void func_80141788(void); +extern void *D_8011DB24; +extern void func_8013E558(void); +extern s32 func_800D0EC4(void); +extern void func_80141874(void); +extern u8 D_800B9A15; +extern unsigned char D_800B9A13; +extern u16 D_80115110; +extern unsigned short D_80115112; +extern void func_8013E588(void * _arg0); +extern void func_80029444(void); +extern void func_801754A8(void); +extern s32 func_80014ED4(s32); +extern s32 func_80015018(s32); +extern void func_800190AC(void); +extern void func_80141C04(void); +extern void func_8013E5E8(void); +extern void func_8013E67C(void); +extern void func_8013E83C(void); +extern s32 func_80029504(void); +extern void func_8013E6AC(void); +extern void func_800D24A0(s32 arg); +extern void func_8013E814(void); +extern void func_8013E83C(); +extern void func_8013E958(); +extern s32 func_80141C50(void); +extern void func_8013F244(void); +extern void func_8013FAF8(s16 a0, s16 a1); +extern void func_80137B80(void); +extern void func_8013E958(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern short D_800B9A02; +extern u8 D_801151C8[]; +extern s32 D_801151D0; +extern u16 D_8011511A; +extern u16 D_8011511E; +extern s32 D_80115130; +extern s16 D_8011514C; +extern void func_8013EA54(void); +extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ +extern s16 func_8014168C(s16 a0); +extern s32 func_8014032C(s32 a0, s32 a1); +extern void func_80139954(void); +extern void func_801376E8(int a0, int a1); +extern unsigned char *func_80141CA4(void); +extern void func_8013EB7C(void); +extern s32 func_8013F350(void); /* §30#2 widened (discarding caller) */ +extern u16 D_80115112; +extern void func_8013ED6C(void); +extern s32 func_8013EE10(); +extern s32 func_800D0488(s16 a0); +extern void func_800D2624(void); +extern void func_8013EF88(void); +extern void func_8013F138(void); +extern unsigned short D_80115114; +extern unsigned short D_80115118; +extern void func_8013F1BC(void); +extern void func_80141C0C(s32); +extern u16 D_8011511C; +extern u16 D_80115120; +extern u16 D_80115122; +extern s16 D_80115128; +extern s16 D_8011512A; +extern u16 D_8011512E; +extern u8 D_80115140[]; +extern s16 D_8011514E; +extern u8 D_80115152; +extern u8 D_80115158[]; /* macro-canonical (§8e) */ +extern u8 D_8011515C; /* macro-canonical (§8e) */ +extern u8 D_8018305C[]; +extern u8 D_80183074[]; +extern u16 D_80182F78[]; +extern s32 func_80029178(s32 arg); +extern s32 func_800291B4(s32 arg); +extern void func_8014AA04(s32 a0); +extern void func_801415C0(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); +extern s32 func_80140608(s32 a0); +extern void func_801407F4(void); +extern s32 func_801416D4(s16); /* macro-canonical (§8e) */ +extern s32 func_8013F350(void); +extern void func_80140E6C(void); +extern void func_80140F00(void); +extern s32 *func_80140958(s32 *, s32, s32); +extern int func_80141100(int); +extern s16 func_8014168C(s16); +extern s32 func_8013FFD8(s16, s32, s32 *); +extern void func_80024054(void *a0, void *a1); +extern s32 *func_800D2650(s32 *, void *, s32, s32, s32, s32); +extern s32 func_8005A600(s32, s32, s32, s32, s32); +extern s32 func_800D27DC(s32, s32 *, void *, s32, s32); +extern s32 *func_800D29F8(s32, s32, void *, s32, s32); +extern int func_80137D08(int arg0, int arg1, short arg2); +extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8013FAF8(s16 arg0, s16 arg1); +extern s32 func_80028D58(void); +extern s32 func_80028DE0(void); +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern int func_800D2CA8(int, int); +extern void func_800D2D10(int, int, void *, int); +extern int func_80029FE4(void); +extern char *func_8002AAB4(void); +extern char *strcpy(char *, const char *); +extern int func_8002A26C(void); +extern int func_8002A2B0(void); +extern int func_8002A4B8(void); +extern s32 func_8002A4FC(s32 a0); +extern int func_8002A998(void); +extern int func_8002A9DC(void); +extern int func_8002A728(void); +extern int func_8002A76C(void); +extern int func_80029FD4(void); +extern s32 func_8002A1B4(void); +extern short func_8002A28C(void); +extern short func_8002A27C(void); +extern s32 func_8002A400(void); +extern short func_8002A4D8(void); +extern short func_8002A4C8(void); +extern s32 func_8002A8E0(void); +extern short func_8002A9B8(void); +extern short func_8002A9A8(void); +extern s32 func_8002A670(void); +extern short func_8002A748(void); +extern short func_8002A738(void); +extern int func_801412A8(int, int, int, int, int, int); +extern int func_80141100(int param_1); +extern void func_800291A0(s32, s32); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_801415C0(s32 param_1, s32 param_2); +extern u8 D_80115148[]; +extern u8 D_80115149[]; +extern u8 D_80115158[]; +extern u8 D_8011514D; +extern u8 D_8011515C; +extern s32 func_800D11F0(s32 a0); +extern s32 func_800D1658(s32 a0); +extern s32 func_801416D4(s16 param_1); +extern void func_8001903C(void); +extern void func_801417C4(void); +extern u8 D_800B9A16; +extern u16 D_80115114; +extern void func_801417F8(void); +extern volatile u16 D_8011511A; +extern u16 D_8011512E; /* §17a-1: canonical width (jr_8013F350 TUs decl u16); byte-neutral here (only use is store-0) */ +extern s32 func_80029178(s32 a0); +extern void func_801418F8(void); +extern void func_80141A60(void); +extern void func_80141C0C(s32 param_1); +extern s32 func_80015144(void); +extern unsigned char D_80112C04[]; +extern unsigned char D_80112C50[]; +extern unsigned char D_80112C9C[]; +extern unsigned char D_80112CE8[]; +extern unsigned char D_80112D38[]; +extern unsigned char D_80112D78[]; +extern unsigned char D_80112DBC[]; +extern unsigned char D_80112DF4[]; +extern unsigned char D_80112E14[]; +extern unsigned char D_80112E40[]; +extern unsigned char D_80112E6C[]; +extern unsigned char D_80112EBC[]; +extern unsigned char D_80112F0C[]; +extern unsigned char D_80112F48[]; +extern unsigned char D_80112F9C[]; +extern unsigned char D_80112FDC[]; +extern unsigned char D_8011302C[]; +extern unsigned char D_80113074[]; +extern unsigned char D_801130B8[]; +extern unsigned char D_801130E8[]; +extern unsigned char D_80113138[]; +extern unsigned char D_8011317C[]; +extern unsigned char D_801131A8[]; +extern unsigned char D_801131E8[]; +extern unsigned char D_80113214[]; +extern unsigned char D_80113254[]; +extern unsigned char D_80113278[]; +extern unsigned char D_801132B8[]; +extern unsigned char D_801132E4[]; +extern unsigned char D_80113324[]; +extern unsigned char D_80113360[]; +extern unsigned char D_801133A4[]; +extern unsigned char D_801133F4[]; +extern unsigned char D_80113440[]; +extern unsigned char D_80113474[]; +extern unsigned char D_801134B0[]; +extern unsigned char D_801134FC[]; +extern unsigned char D_80113530[]; +extern unsigned char D_80113554[]; +extern unsigned char D_801135A8[]; +extern unsigned char D_80113600[]; +extern unsigned char D_80113650[]; +extern unsigned char D_80113694[]; +extern unsigned char D_801136DC[]; +extern unsigned char D_80113724[]; +extern unsigned char D_80113744[]; +extern unsigned char D_80113770[]; +extern unsigned char D_80113794[]; +extern unsigned char D_801137D8[]; +extern unsigned char D_8011381C[]; +extern unsigned char D_8011383C[]; +extern unsigned char D_8011386C[]; +extern unsigned char D_801138A4[]; +extern unsigned char D_801138D0[]; +extern unsigned char D_80113900[]; +extern unsigned char D_80113944[]; +extern unsigned char D_80113964[]; +extern unsigned char D_8011399C[]; +extern unsigned char D_801139E8[]; +extern unsigned char D_80113A28[]; +extern unsigned char D_80113A50[]; +extern unsigned char D_80113A84[]; +extern unsigned char D_80113AB0[]; +extern unsigned char D_80113AE0[]; +extern unsigned char D_80113B34[]; +extern unsigned char D_80113B68[]; +extern unsigned char D_80113BA4[]; +extern unsigned char D_80113BC0[]; +extern unsigned char D_80113BF0[]; +extern unsigned char D_80113C20[]; +extern unsigned char D_80113C3C[]; +extern unsigned char D_80113C7C[]; +extern unsigned char * func_80141CA4(void); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_80142414(s32 a0, s16 a1); +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s32 func_8012C51C(void *a0, s32 a1); +extern void func_80142454(s32 a0); +extern void func_8012C218(void *a0); +extern void func_801424E4(short *param_1); +extern void func_801425CC(void *a0); +extern void func_8012C1B8(void); +extern s32 func_8012C1DC(s32 a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern void func_8012CAE4(void *a0); +extern s32 func_8012AD50(void *a0); +extern void func_80142608(s32 param_1); +extern void func_801426D4(s32 a0); +extern s32 func_8012BEE8(s32 a0); +extern void func_80142740(int param_1); +extern void func_80142778(u8 *a1); +extern void func_801427DC(void); +extern void func_801427E4(void); +extern void func_801427EC(int param_1); +extern s32 func_80142DB8(s32 *a0); +extern s32 func_80142D38(s32 *a0); +extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); +extern void func_801428CC(s32 *a0); +extern void func_8014292C(int param_1); +extern void func_80142978(int param_1); +extern void func_801429C4(int param_1); +extern void func_80142A80(void); +extern void func_80142C7C(void); +extern void func_80142C84(s32 a0); +extern void func_8012CBF4(s32 a0); +extern void func_80142C9C(s32 * arg0); +extern void func_80142B2C(void *arg0); +extern void func_80142DC4(int param_1); +extern void func_80142E38(int param_1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_80142EC0(s32 param_1); +extern void func_80142FFC(s32 *a0); +extern void func_8014305C(int param_1); +extern void func_80143188(s32 *a0); +extern void *memcpy(void *, const void *, u32); +extern int func_8001CA88(int, void *); +extern s32 func_8012E504(s32 a0, s32 a1); +extern void func_800233CC(void *, unsigned short); +extern void func_801431E8(s32 param_1); +extern s32 func_8012C044(s32 a0); +extern void func_80142C9C(s32 *a0); +extern s32 func_8012BF10(s32 a0, s32 a1); +extern void func_8012AD44(s32 *a0, s16 a1); +extern void func_801432FC(s32 *a0); +extern void func_80143390(s32 *a0); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern void func_80143458(s32 param_1); +extern void func_8014358C(s32 param_1); +extern u8 *func_8012913C(s32 a0); +extern s32 rand(void); +extern void func_80143640(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80143970(s32 a0); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_80143994(s32 a0, s32 a1); +extern void func_801439C0(u8 *a0); +extern s32 func_80134510(s32 arg); +extern s32 ratan2(s32 a0, s32 a1); +extern s16 D_801152AC; +extern s16 D_801152AA; +extern u8 D_801152A8[]; +extern void func_801439FC(s32 a0); +extern void func_80143B30(void *a0); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80143B6C(s32 arg0, s32 arg1); +extern void func_80143BDC(u16 *a0); +extern void func_80143C38(void *a0); +extern void func_80143C74(s32 a0, s32 a1); +extern void func_80143C98(void *a0); +extern void func_80143CD4(s32 a0); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void func_80143D28(s32 param_1); +extern void func_80143E68(void *a0); +extern void func_80143EA4(void); +extern void func_80143EAC(void); +extern void func_80143EB4(void); +extern s32 func_8004787C(s32 a0); +extern void func_80143EBC(s32 a0); +extern void func_80144054(void *a0); +extern void *func_80010A08(s32); +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern s32 RotTransPers(s32, s32, s32 *, s32 *); +extern s32 func_80047948(s32 a0); +extern s32 AddPrim(s32, void *); +extern void func_80144090(s32 param_1); +extern void func_801442F8(int param_1); +extern void func_8012C194(void); +extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80144364(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8012B200(u8 *a0); +extern u8 D_800D387C[]; +extern u8 D_800D3888[]; +extern void func_80144558(u8 *param_1); +extern void func_801446A4(int param_1); +extern void func_8014477C(void *param_1); +extern void func_80144880(s32 param_1); +extern void func_80144988(s32 a0); +extern void func_801449C8(void *a0); +extern void func_80144A04(s32 *a0); +extern void func_80144A2C(void *a0); +extern void func_80144A68(s32 *a0); +extern void func_80144A90(void); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_80144A98(u8 *a0); +extern void func_80144B14(void); +extern void func_80144AEC(s32 *a0); +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern void func_80145B24(void); +extern void func_80145934(void); +extern void func_80145A2C(void); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern void func_80145BF8(void); +extern void func_80145C54(void); +extern void func_80146014(s32 a0); +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C3C(u8 *a0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern volatile s32 D_80127090; +extern volatile s32 D_80127094; +extern volatile s32 D_80127098; +extern void func_80147F78(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80148038(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148D44(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32); +extern void func_8012F038(s32); +extern void func_8014942C(s32 arg0); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32, s32, s32, s32); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern u8 D_80078E78[]; +extern s32 func_8016F1C4(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_8014BD60(s32 a0, s32 a1); +extern void func_8014B084(void); +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern void func_8014C1C8(s32 a0, s32 a1, void* a2); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern void func_8014DF94(s32 arg0); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); /* canonical (engine_core.h:11555) */ +extern s32 func_8014E284(s32 a0, s16 *arg1, s16 *arg2); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E48C(s32 a0); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014ED80(struct SubED80 *a0); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014F4C0(u8 *a0); +extern void func_8014F468(void); +extern u8 D_800D3918[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern void func_8014FA04(s32 a0); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern s32 func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_80135D20(s32 a0, s32 a1, void *a2); +extern s32 func_8014FFDC(s32 e, void *a1, void *a2); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_801502EC(s32 e, void *a1, void *a2); +extern s32 func_80150460(s32 e, s32 a1); +extern s32 func_80150170(void *e); +extern s32 func_80150460(s32 a, s32 b); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern void func_801504D8(u16 *a0); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B28(int param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern u8 D_80126948[]; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void func_80152C80(s32* a0); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern u8 D_80062C04[]; +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void func_8014ED28(s32 _arg0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154B4C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80029178(s32); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_80157808(s32 a0); +extern void func_801577C8(int param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +/* ==== end §8b carried decl layer ==== */ + + + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80184360[])(void); + extern int D_801A6B90; + extern int D_801A6B94; + extern int D_801A6B98; + extern int D_801A6B9C; + extern int D_801A6BA0; + short sVar1; + + D_80184360[*(unsigned short *)(param_1 + 2)](); + switch (D_801A6B90) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_801A6B98 = 0; + D_801A6B94 = 0x46; + D_801A6B90 += 1; + break; + case 2: + if (D_801A6B94 == 0) { + if (SsGetMute() == 0) { + D_801A6B90 += 1; + } + } else { + D_801A6B94 -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_801A6B90 += 1; + } + break; + case 4: + D_801A6B9C = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_801A6B94 = 0xd2; + } else { + D_801A6B94 = 1; + } + break; + case 5: + D_801A6B94 -= 1; + if (D_801A6B94 == -1 || D_801A6BA0 != 0) { + D_801A6B94 = 0; + D_801A6B90 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_801A6B94 = 0x28; + D_801A6B90 += 1; + break; + case 7: + if (D_801A6B94 == 0) { + if (SsGetMute() == 0) { + D_801A6B90 += 1; + } + } else { + D_801A6B94 -= 1; + } + break; + case 8: + D_801A6B98 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158ab4 (src/shared) */ + + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158ae4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); + +void func_80158BB0(void *arg0) { + + extern M2C_UNK D_800D58D8; + extern s32 D_801A6B90; + if (D_801A6B90 == 0) { + D_801A6B90 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158c40 (src/shared) */ + + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158cd8 (src/shared) */ + + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158d60 (src/shared) */ + + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158e24 (src/shared) */ + + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + + extern s32 D_801A6B9C; + extern s32 D_80184330[]; + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_801A6B9C; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_80184330[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + + extern s32 D_801A6BA0; + extern u8 D_80110C3C[]; + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_801A6BA0 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592cc (src/shared) */ + + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); + +void func_8015934C(void *arg0) { + + extern u8 D_800AE6BD; + extern s32 D_801A6B90; + extern s32 D_801A6B98; + void *temp_v1; + + if (D_801A6B90 == 4) { + D_801A6B90 = 5; + } + if (D_801A6B98 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593e4 (src/shared) */ + + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + + +s32 func_80159464(void) { + + extern Entry D_80184398[]; + Entry *e; + + e = D_80184398; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_801588CC", func_801594E8); + + + +void func_80159698(void *a0) { + + extern void (*D_801845AC[])(void); + D_801845AC[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596d4 (src/shared) */ + + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_801843CC)); + func_80028620(1, &(*(u8 *)&D_801843CC) + 0x10); + func_80028620(2, &(*(u8 *)&D_801843CC) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987c (src/shared) */ + + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598bc (src/shared) */ + + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598e0 (src/shared) */ + + + + +void func_80159968(void *a0) { + + extern void (*D_80184650[])(void); + D_80184650[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599e0 (src/shared) */ + + +void func_80159A18(void) { +} + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159b08 (src/shared) */ + + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159b3c (src/shared) */ + + + + +void func_80159B70(void *a0) { + + extern void (*D_801847A4[])(void); + D_801847A4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159bac (src/shared) */ + + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + + +void func_80159BE4(s32 arg0) +{ + + extern unsigned char D_801845C0; + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_801845C0); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_801588CC", func_80159C84); + +DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015a1c8 (src/shared) */ + + +DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */ + + +DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */ + + + + +void func_8015A264(void *a0) { + + extern void (*D_801847AC[])(void); + D_801847AC[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */ + + + +// @class: other +// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay + + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern void func_801553A8(s32 *a0); +extern s32 func_80172608(u8 *a0); +extern void func_80146CA0(void *a0); + +void func_8015A2D8(s32 param_1) +{ + + extern int D_801845D0; + unsigned char bVar1; + + ((void (*)(int, int *))func_80146DB8)(param_1, &D_801845D0); + if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) { + func_80154150(param_1, 10); + func_80154A74(param_1, 0x1c); + *(int *)(param_1 + 0x2c) = 0xfffc0000; + goto LAB_8015a38c; + } + bVar1 = *(unsigned char *)(param_1 + 0xa9); + switch (bVar1) { + case 0x41: + func_80154150(param_1, 7); + break; + case 0x53: + case 0x73: + func_80154150(param_1, 6); + break; + default: + *(int *)(param_1 + 0x23c) = 0; + goto LAB_8015a390; + } + func_80154A74(param_1, 0x21); +LAB_8015a38c: + *(int *)(param_1 + 0x23c) = 0; +LAB_8015a390: + func_8014C010(param_1, 2); + ((void (*)(int))func_801553A8)(param_1); + ((void (*)(int))func_80172608)(param_1); + ((void (*)(int))func_80146CA0)(param_1); + return; +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_801588CC", func_8015A3C8); + +DEFINE_func_8015AB7C() /* dedup: shared engine-core @0x8015ab7c (src/shared) */ + + +DEFINE_func_8015ABD4() /* dedup: shared engine-core @0x8015abd4 (src/shared) */ + + + +// @class: plumbing +// @stuck: none — MATCH (param held in $s0 across 3 calls; lhu 0x16E; &D_801845F0 arg) +extern void func_80154150(s32 a0, s32 a1); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern s32 func_80161CD0(s32 a0, s32 a1); + +void func_8015AC48(s32 arg0) +{ + + extern M2C_UNK D_801845F0; + func_80154150(arg0, 9); + func_80146DB8((s32 *)arg0, &D_801845F0); + func_80161CD0(arg0, M2C_FIELD(arg0, u16 *, 0x16E)); +} + + +DEFINE_func_8015AC90() /* dedup: shared engine-core @0x8015ac90 (src/shared) */ + + +DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015acc4 (src/shared) */ + + +DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015ad08 (src/shared) */ + + + + +void func_8015AD3C(void *a0) { + + extern void (*D_801847B4[])(void); + D_801847B4[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015ad78 (src/shared) */ + + +DEFINE_func_8015ADB0() /* dedup: shared engine-core @0x8015adb0 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_801588CC", func_8015AE2C); + +DEFINE_func_8015B6F4() /* dedup: shared engine-core @0x8015b6f4 (src/shared) */ + + +DEFINE_func_8015B7B4() /* dedup: shared engine-core @0x8015b7b4 (src/shared) */ + + +DEFINE_func_8015B858() /* dedup: shared engine-core @0x8015b858 (src/shared) */ + + +DEFINE_func_8015B8F8() /* dedup: shared engine-core @0x8015b8f8 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_801588CC", func_8015B950); + +DEFINE_func_8015BD8C() /* dedup: shared engine-core @0x8015bd8c (src/shared) */ + + +DEFINE_func_8015BDD0() /* dedup: shared engine-core @0x8015bdd0 (src/shared) */ + + +DEFINE_func_8015BE04() /* dedup: shared engine-core @0x8015be04 (src/shared) */ + + + + +void func_8015BE38(struct Obj *a0) { + + extern void (*D_801847D0[])(void); + D_801847D0[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_8015BE74() /* dedup: shared engine-core @0x8015be74 (src/shared) */ + + +DEFINE_func_8015BE94() /* dedup: shared engine-core @0x8015be94 (src/shared) */ + + +DEFINE_func_8015BEC4() /* dedup: shared engine-core @0x8015bec4 (src/shared) */ + + +DEFINE_func_8015BEE4() /* dedup: shared engine-core @0x8015bee4 (src/shared) */ + + +DEFINE_func_8015BF04() /* dedup: shared engine-core @0x8015bf04 (src/shared) */ + + +DEFINE_func_8015BF48() /* dedup: shared engine-core @0x8015bf48 (src/shared) */ + + +DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015bf7c (src/shared) */ + + +DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015bfb0 (src/shared) */ + + + + +void func_8015BFF4(void *a0) { + + extern void (*D_801847DC[])(void); + D_801847DC[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_801588CC", func_8015C030); + +DEFINE_func_8015C08C() /* dedup: shared engine-core @0x8015c08c (src/shared) */ + + +DEFINE_func_8015C0C4() /* dedup: shared engine-core @0x8015c0c4 (src/shared) */ + + +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern void func_80146CA0(void *a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147324(s32 a0); +extern void func_801473EC(s32 *a0); +extern void func_80147A84(s32 arg0); +extern int func_80148AFC(void *a0); +extern s32 func_80149FB0(s32 a0); +extern void func_8014C010(s32 a0, s32 a1); +extern void func_8014CC28(s32 a0); +extern void func_8014D738(void); +extern void func_8014F3E8(s32 a0); +extern s32 func_8015BE94(); +extern void func_8015C0C4(s32 a0); + + + +s32 func_8015C128(s32 param_1) { + + extern u16 D_800B99DA; + extern void func_8015C6E0(int); + extern void (*D_8018465C[])(int); + + int sp10[3]; + int sp20[3]; + int temp_s0; + int temp_v0; + + ((void(*)())func_80149FB0)(); + if (((int(*)(int))func_80148AFC)(((int)param_1)) & 0xFF) { + sp10[0] = 0; + sp10[1] = 0; + sp10[2] = -0x4000; + ((void(*)(int, int *, int *))func_8001382C)(*(short *)(*(int *)(((int)param_1) + 0x20) + 0x12), sp10, sp20); + *(int *)(((int)param_1) + 0x234) += sp20[0]; + *(int *)(((int)param_1) + 0x238) += sp20[1]; + *(int *)(((int)param_1) + 0x23C) += sp20[2]; + } + ((void(*)(int, int *, int *))func_8001382C)((short)(-*(unsigned short *)(*(int *)(((int)param_1) + 0x20) + 0x12)), + (int *)(((int)param_1) + 0x234), sp20); + ((void(*)(int, int *))func_80146DB8)(((int)param_1), sp20); + func_80147A84(((int)param_1)); + ((void(*)(int))func_801473EC)(((int)param_1)); + if (!(D_800B99DA & 3)) { + ((void(*)(int, int))func_8014C010)(((int)param_1), 1); + ((void(*)(int))func_80147324)(0x65F); + } + if (((int(*)(int))func_8014D738)(((int)param_1)) != 0) { + D_8018465C[*(u16 *)((int)param_1)](((int)param_1)); + func_8015C6E0(((int)param_1)); + return; + } + temp_s0 = ((int(*)(int))func_8014CC28)(((int)param_1)); + temp_v0 = ((int(*)(int))func_8014F3E8)(((int)param_1)); + if (temp_v0 != 0) { + if ((temp_v0 & 0xFF00) != 0x4000) { + ((void(*)(int, int))func_80146E90)(((int)param_1), 6); + ((void(*)(int))func_80146CA0)(((int)param_1)); + return; + } + if ((temp_v0 & 0x4000) && ((int(*)(int))func_80146E98)(((int)param_1)) != 0) { + ((void(*)(int, int))func_80147078)(((int)param_1), 4); + ((void(*)(int))func_8015C0C4)(((int)param_1)); + } + } else if (temp_s0 == 0) { + D_8018465C[*(u16 *)((int)param_1)](((int)param_1)); + ((void(*)(int, int))func_80147078)(((int)param_1), 3); + ((void(*)(int))func_8015BE94)(((int)param_1)); + } +} + + diff --git a/src/ov_SC07_011/ov_SC07_011_jr_80154C24.c b/src/ov_SC07_011/ov_SC07_011_jr_80154C24.c index 13cb5bc7a..31ac91150 100644 --- a/src/ov_SC07_011/ov_SC07_011_jr_80154C24.c +++ b/src/ov_SC07_011/ov_SC07_011_jr_80154C24.c @@ -2519,646 +2519,3 @@ void func_80158880(s32 *param) { func_80149020(param); D_80180A1C[*(u8 *)((s32)param + 0x4F)](param); } - - -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_80154C24", func_801588CC); - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158ab4 (src/shared) */ - - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158ae4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); - -void func_80158BB0(void *arg0) { - - extern M2C_UNK D_800D58D8; - extern s32 D_8018F228; - if (D_8018F228 == 0) { - D_8018F228 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158c40 (src/shared) */ - - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158cd8 (src/shared) */ - - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158d60 (src/shared) */ - - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158e24 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - - extern s32 D_8018F234; - extern s32 D_801809F0[]; - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_8018F234; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_801809F0[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - - extern s32 D_8018F238; - extern u8 D_80110C3C[]; - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_8018F238 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592cc (src/shared) */ - - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); - -void func_8015934C(void *arg0) { - - extern u8 D_800AE6BD; - extern s32 D_8018F228; - extern s32 D_8018F230; - void *temp_v1; - - if (D_8018F228 == 4) { - D_8018F228 = 5; - } - if (D_8018F230 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593e4 (src/shared) */ - - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - - -s32 func_80159464(void) { - - extern Entry D_80180A58[]; - Entry *e; - - e = D_80180A58; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_80154C24", func_801594E8); - - - -void func_80159698(void *a0) { - - extern void (*D_80180C6C[])(void); - D_80180C6C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596d4 (src/shared) */ - - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_80180A8C)); - func_80028620(1, &(*(u8 *)&D_80180A8C) + 0x10); - func_80028620(2, &(*(u8 *)&D_80180A8C) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987c (src/shared) */ - - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598bc (src/shared) */ - - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598e0 (src/shared) */ - - - - -void func_80159968(void *a0) { - - extern void (*D_80180D10[])(void); - D_80180D10[*(u8 *)((s32)a0 + 0x4D)](); -} - - -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_80154C24", func_801599A4); - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599e0 (src/shared) */ - - -void func_80159A18(void) { -} - -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_80154C24", func_80159A20); - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159b08 (src/shared) */ - - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159b3c (src/shared) */ - - - - -void func_80159B70(void *a0) { - - extern void (*D_80180E64[])(void); - D_80180E64[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159bac (src/shared) */ - - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - - -void func_80159BE4(s32 arg0) -{ - - extern unsigned char D_80180C80; - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_80180C80); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - - -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_80154C24", func_80159C84); - -DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015a1c8 (src/shared) */ - - -DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */ - - -DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */ - - - - -void func_8015A264(void *a0) { - - extern void (*D_80180E6C[])(void); - D_80180E6C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay - - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_801553A8(s32 *a0); -extern s32 func_80172608(u8 *a0); -extern void func_80146CA0(void *a0); - -void func_8015A2D8(s32 param_1) -{ - - extern int D_80180C90; - unsigned char bVar1; - - ((void (*)(int, int *))func_80146DB8)(param_1, &D_80180C90); - if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) { - func_80154150(param_1, 10); - func_80154A74(param_1, 0x1c); - *(int *)(param_1 + 0x2c) = 0xfffc0000; - goto LAB_8015a38c; - } - bVar1 = *(unsigned char *)(param_1 + 0xa9); - switch (bVar1) { - case 0x41: - func_80154150(param_1, 7); - break; - case 0x53: - case 0x73: - func_80154150(param_1, 6); - break; - default: - *(int *)(param_1 + 0x23c) = 0; - goto LAB_8015a390; - } - func_80154A74(param_1, 0x21); -LAB_8015a38c: - *(int *)(param_1 + 0x23c) = 0; -LAB_8015a390: - func_8014C010(param_1, 2); - ((void (*)(int))func_801553A8)(param_1); - ((void (*)(int))func_80172608)(param_1); - ((void (*)(int))func_80146CA0)(param_1); - return; -} - - -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_80154C24", func_8015A3C8); - -DEFINE_func_8015AB7C() /* dedup: shared engine-core @0x8015ab7c (src/shared) */ - - -DEFINE_func_8015ABD4() /* dedup: shared engine-core @0x8015abd4 (src/shared) */ - - - -// @class: plumbing -// @stuck: none — MATCH (param held in $s0 across 3 calls; lhu 0x16E; &D_80180CB0 arg) -extern void func_80154150(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80161CD0(s32 a0, s32 a1); - -void func_8015AC48(s32 arg0) -{ - - extern M2C_UNK D_80180CB0; - func_80154150(arg0, 9); - func_80146DB8((s32 *)arg0, &D_80180CB0); - func_80161CD0(arg0, M2C_FIELD(arg0, u16 *, 0x16E)); -} - - -DEFINE_func_8015AC90() /* dedup: shared engine-core @0x8015ac90 (src/shared) */ - - -DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015acc4 (src/shared) */ - - -DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015ad08 (src/shared) */ - - - - -void func_8015AD3C(void *a0) { - - extern void (*D_80180E74[])(void); - D_80180E74[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015ad78 (src/shared) */ - - -DEFINE_func_8015ADB0() /* dedup: shared engine-core @0x8015adb0 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_80154C24", func_8015AE2C); - -DEFINE_func_8015B6F4() /* dedup: shared engine-core @0x8015b6f4 (src/shared) */ - - -DEFINE_func_8015B7B4() /* dedup: shared engine-core @0x8015b7b4 (src/shared) */ - - -DEFINE_func_8015B858() /* dedup: shared engine-core @0x8015b858 (src/shared) */ - - -DEFINE_func_8015B8F8() /* dedup: shared engine-core @0x8015b8f8 (src/shared) */ - - -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_80154C24", func_8015B950); - -DEFINE_func_8015BD8C() /* dedup: shared engine-core @0x8015bd8c (src/shared) */ - - -DEFINE_func_8015BDD0() /* dedup: shared engine-core @0x8015bdd0 (src/shared) */ - - -DEFINE_func_8015BE04() /* dedup: shared engine-core @0x8015be04 (src/shared) */ - - - - -void func_8015BE38(struct Obj *a0) { - - extern void (*D_80180E90[])(void); - D_80180E90[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015BE74() /* dedup: shared engine-core @0x8015be74 (src/shared) */ - - -DEFINE_func_8015BE94() /* dedup: shared engine-core @0x8015be94 (src/shared) */ - - -DEFINE_func_8015BEC4() /* dedup: shared engine-core @0x8015bec4 (src/shared) */ - - -DEFINE_func_8015BEE4() /* dedup: shared engine-core @0x8015bee4 (src/shared) */ - - -DEFINE_func_8015BF04() /* dedup: shared engine-core @0x8015bf04 (src/shared) */ - - -DEFINE_func_8015BF48() /* dedup: shared engine-core @0x8015bf48 (src/shared) */ - - -DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015bf7c (src/shared) */ - - -DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015bfb0 (src/shared) */ - - - - -void func_8015BFF4(void *a0) { - - extern void (*D_80180E9C[])(void); - D_80180E9C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_80154C24", func_8015C030); - -DEFINE_func_8015C08C() /* dedup: shared engine-core @0x8015c08c (src/shared) */ - - -DEFINE_func_8015C0C4() /* dedup: shared engine-core @0x8015c0c4 (src/shared) */ - - -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147324(s32 a0); -extern void func_801473EC(s32 *a0); -extern void func_80147A84(s32 arg0); -extern int func_80148AFC(void *a0); -extern s32 func_80149FB0(s32 a0); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_8014CC28(s32 a0); -extern void func_8014D738(void); -extern void func_8014F3E8(s32 a0); -extern s32 func_8015BE94(); -extern void func_8015C0C4(s32 a0); - - - -s32 func_8015C128(s32 param_1) { - - extern u16 D_800B99DA; - extern void func_8015C6E0(int); - extern void (*D_80180D1C[])(int); - - int sp10[3]; - int sp20[3]; - int temp_s0; - int temp_v0; - - ((void(*)())func_80149FB0)(); - if (((int(*)(int))func_80148AFC)(((int)param_1)) & 0xFF) { - sp10[0] = 0; - sp10[1] = 0; - sp10[2] = -0x4000; - ((void(*)(int, int *, int *))func_8001382C)(*(short *)(*(int *)(((int)param_1) + 0x20) + 0x12), sp10, sp20); - *(int *)(((int)param_1) + 0x234) += sp20[0]; - *(int *)(((int)param_1) + 0x238) += sp20[1]; - *(int *)(((int)param_1) + 0x23C) += sp20[2]; - } - ((void(*)(int, int *, int *))func_8001382C)((short)(-*(unsigned short *)(*(int *)(((int)param_1) + 0x20) + 0x12)), - (int *)(((int)param_1) + 0x234), sp20); - ((void(*)(int, int *))func_80146DB8)(((int)param_1), sp20); - func_80147A84(((int)param_1)); - ((void(*)(int))func_801473EC)(((int)param_1)); - if (!(D_800B99DA & 3)) { - ((void(*)(int, int))func_8014C010)(((int)param_1), 1); - ((void(*)(int))func_80147324)(0x65F); - } - if (((int(*)(int))func_8014D738)(((int)param_1)) != 0) { - D_80180D1C[*(u16 *)((int)param_1)](((int)param_1)); - func_8015C6E0(((int)param_1)); - return; - } - temp_s0 = ((int(*)(int))func_8014CC28)(((int)param_1)); - temp_v0 = ((int(*)(int))func_8014F3E8)(((int)param_1)); - if (temp_v0 != 0) { - if ((temp_v0 & 0xFF00) != 0x4000) { - ((void(*)(int, int))func_80146E90)(((int)param_1), 6); - ((void(*)(int))func_80146CA0)(((int)param_1)); - return; - } - if ((temp_v0 & 0x4000) && ((int(*)(int))func_80146E98)(((int)param_1)) != 0) { - ((void(*)(int, int))func_80147078)(((int)param_1), 4); - ((void(*)(int))func_8015C0C4)(((int)param_1)); - } - } else if (temp_s0 == 0) { - D_80180D1C[*(u16 *)((int)param_1)](((int)param_1)); - ((void(*)(int, int))func_80147078)(((int)param_1), 3); - ((void(*)(int))func_8015BE94)(((int)param_1)); - } -} - diff --git a/src/ov_SC07_011/ov_SC07_011_jr_801588CC.c b/src/ov_SC07_011/ov_SC07_011_jr_801588CC.c new file mode 100644 index 000000000..7c3258996 --- /dev/null +++ b/src/ov_SC07_011/ov_SC07_011_jr_801588CC.c @@ -0,0 +1,2660 @@ +#include "common.h" +#include "../shared/engine_core.h" + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +typedef struct { s32 w[8]; } Vec8; +typedef struct { s32 m[3][3]; s32 t[3]; } MATRIX; +typedef struct { s32 vx, vy, vz; } VECTOR; +typedef struct { s16 h[8]; } Buf; +typedef struct { char _b[8]; } M8; /* size 8, alignment 1 -> unaligned copy */ +typedef struct { u16 f0, f2, f4; s16 f6; } Box_80133784; +typedef struct { s16 x, y, z; } Vec3s; +typedef struct { s32 f0; } E4; +typedef struct { u16 f0; s16 f2; } Prim4; +typedef struct { s16 x; s16 y; } Hw4; +typedef struct { s32 f0; u32 *f4; s32 f8; s32 fC; s32 f10; } Rec20; +typedef struct { u8 d[0x60]; } Blk60; +extern void func_80128288(void); +extern void func_80128158(void); +extern void func_801285E4(void); +extern void func_80128178(void); +extern void func_80128678(void); +extern void func_80128198(void); +extern void func_80128714(void); +extern void func_801281B8(void); +extern void func_8013E67C(void); +extern void func_801281D8(void); +extern void func_8013E558(void); +extern void func_801281F8(void); +extern s32 func_80128218(void); +extern void func_80128A28(void); +extern void func_80128228(void); +extern void func_80128AF4(void); +extern void func_80128248(void); +extern void func_801282EC(void); +extern void func_80128268(void); +extern void func_80011B7C(int); +extern void func_801282CC(void); +extern void func_8001C0C8(void); +extern void func_80015310(void); +extern void func_80129258(void); +extern void func_801378F0(void); +extern void func_80010E14(void); +extern s16 currentLocationId; +extern s32 func_80029504(void); +extern s32 func_800CF854(s32); +extern s32 func_80128998(void); +extern s32 func_801289F0(void); +extern s32 func_801288E8(s32); +extern s32 func_80128940(s32); +extern s32 func_80029178(s32); +extern s32 func_801288B0(void); +extern void func_80011C10(void); +extern void func_8012832C(void); +extern void func_80129220(void); +extern void func_80011E24(void); +extern void func_80128C14(void); +extern void func_8002AEF8(void); +extern void func_800CFBBC(void); +extern void SsUtReverbOff(void); +extern void func_8013C98C(void); +extern void func_80129C40(s32 a0); +extern void func_800D0630(void); +extern void func_80145CEC(void); +extern void func_80144B9C(void); +extern u8 D_800B9A17; +extern u8 D_800B9A10; +extern void func_80128420(void); +extern s32 func_800D0588(void); +extern void func_801284B8(void); +extern void func_80175308(void); +extern void func_8016E8F0(void); +extern void func_80175494(void); +extern u8 D_800B9A64; +extern void func_801284F0(void); +extern void func_80146074(void); +extern void func_8012853C(void); +extern void func_80178608(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern s32 func_80011A3C(void); +extern short currentLocationId; +extern short D_800B99F2; +extern void func_80128564(void); +extern u8 D_800B9A11; +extern void func_801285D4(void); +extern s32 func_800D18DC(void); +extern void func_8014607C(void); +extern void func_801287B8(void); +extern void func_80029444(void); +extern void func_800D1754(void); +extern void func_8014ED28(s32 _arg0); +extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); +extern int func_801288E8(int arg0); +extern int func_80128940(int arg0); +extern void func_80010AE0(s32 a0); +extern void func_80018450(s32 a0, s32 a1); +extern void func_800183E0(s32 a0); +extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); +extern s32 func_80128DB4(s32 a0, s32 *a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(s32 param_1, s32 *param_2); +extern void func_80128FAC(u16 *arg0); +extern s16 D_8011DB2C; +extern s16 D_8011DB30; +extern s32 D_80126AEC; +extern void func_80129010(void); +extern u8 *func_8012913C(s32 a0); +extern u8 * func_801290DC(s32 a0, u8 *a1); +extern void func_8001D074(s32 a, s32 b); +extern u8 *func_801291C0(void); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 * func_8012913C(s32 arg0); +extern void func_80016714(void *a0, s32 a1); +extern u8 * func_801291C0(void); +extern void func_80129248(s16 a0); +extern void func_801292C8(u8 *a0); +extern void func_8012927C(void); +extern void func_8012931C(struct vec *a0); +extern void func_80129350(s32 a0, s32 a1); +extern void func_80129374(s32 a0, s32 a1); +extern s16 D_800B9AAC[]; +extern s16 D_800B9AAE[]; +extern s16 D_800B9AB0[]; +extern s16 D_800B9AB2[]; +extern s16 D_800B9AB4[]; +extern s16 D_800B9AB6[]; +extern s16 D_800B9AB8[]; +extern s16 D_800B9ABA[]; +extern void func_80129398(void); +extern s16 D_80114EE0; +extern void func_80129428(void); +extern void func_8012943C(void); +extern s32 D_8005128C; +extern u8 D_800B9A78; +extern void func_801298F4(void *arg0); +extern void func_801299C8(s32 a, s32 b, s32 c); +extern void func_8012944C(void); +extern unsigned short D_800B99F0; +extern struct BigCopy D_80126DB8; +extern u8 D_80126948[]; +extern struct BigCopy D_80114EE8; +extern s32 D_80126E60[]; +extern s8 D_801150D6; +extern s8 D_801152C0; +extern u8 D_80127504; +extern void func_800144D4(void); +extern void func_80129C40(s32 _arg0); +extern void func_8012A328(void); +extern void func_80053308(s32); +extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ +extern void GsSetRefView2L(void *); +extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ +extern s32 D_80126F04[]; +extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ +extern s32 D_80126FA8[]; +extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ +extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ +extern s32 D_800AE688[]; +extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ +extern void func_80129CF8(void); +extern void func_8012A018(s32 a, s32 b); +extern void func_80129FF4(void); +extern void func_8012A048(void *a0, s32 a1, u8 a2); +extern void func_8012A018(s32 a0, s32 a1); +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern s16 D_80126940; +extern s16 D_80126942; +extern s16 D_80126944; +extern void *memcpy(void *, const void *, unsigned int); +extern void func_8012A094(s32 a0); +extern void func_8012A100(s8 a0); +extern void func_8012A0E0(void); +extern s32 D_80120204; +extern s32 D_80120200; +extern s32 D_8012020C; +extern s32 D_80120208; +extern s16 D_80120218; +extern s16 D_80120210; +extern s16 D_8012021A; +extern s16 D_80120212; +extern s16 D_8012021C; +extern s16 D_80120214; +extern s16 D_80120226; +extern s16 D_80120220; +extern s16 D_80120228; +extern s16 D_80120222; +extern s16 D_8012022A; +extern s16 D_80120224; +extern s32 D_80120294; +extern s16 D_80120298; +extern s16 D_8012029A; +extern void func_8012A110(void); +extern void func_8012A2F4(void); +extern s16 D_80127080; +extern s16 D_801152C2; +extern void func_8012A304(s32 a0, s32 a1); +extern void func_8012A464(void); +extern s32 D_801151D4; +extern void func_8012A4BC(void); +extern void func_8012A598(void *a0); +extern void func_8012A568(void (*a0)(void)); +extern void func_8012A62C(s32); +extern void func_8012A5F8(void (*a0)(void), s32 a1); +extern void func_8012A62C(s32 a0); +extern void func_8012A7D4(void *a0, void *a1); +extern s32 func_8012A6D0(void *a0, void *a1); +extern s16 func_8012A68C(void); +extern s32 func_80047D3C(s32 a0); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 func_8012A6D0(void* a0, void* a1); +extern s16 func_8012A79C(s16 *a0, s16 *a1); +extern s16 func_8012A758(void); +extern void func_8012A7D4(void *arg0, void *arg1); +extern void func_8012AAAC(void); +extern void func_8012A828(s32 a0, void * a1); +extern int func_8012ACE0(void *a0); +extern void func_8012A860(void *a0, int a1); +extern void func_8012A8B0(u8 *a0, s32 a1); +extern void func_8012A8E8(void); +extern u8 D_801202A0[]; +extern u16 D_801270C0; +extern void func_8012A988(u8 *a0); +extern void func_8012A908(void); +extern s32 func_8012ACE0(void *a0); +extern void func_8012ACA0(void *arg0); +extern void func_8012AD44(s32 *a0, s16 a1); +extern s32 func_8012AD50(void * arg0); +extern void func_8012AD64(s32 *a0, s16 a1); +extern void func_8012AD6C(void *a0); +extern void func_8012AD80(s32 a0); +extern void func_8012ADE4(u8 *a0); +extern s32 *D_80126B78; +extern s32 *D_80126B90; +extern s32 D_80126B58; +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80013478(s32 a0, s32 a1); +extern s32 func_8012AE00(s32 a0); +extern s32 func_8012AF0C(s32 a0, s32 a1); +extern s32 func_80134510(s32 arg); +extern s32 func_8012B030(u8 *a0); +extern int func_80047948(int a0); +extern int func_8004787C(int a0); +extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8012B178(s32 a0, s32 a1); +extern void func_8012B1B4(s32 a0, s32 a1); +extern void func_8012B200(u8 *a0); +extern void func_8012B21C(void *a0); +extern void func_8012B23C(s32 a0); +extern void func_8012B260(u8 *a0); +extern void func_80049CAC(s32 a0, s32 a1); +extern void func_8012B2CC(s32 a0); +extern void RotMatrixYXZ(void *m, void *p); +extern void func_8012B370(int a0); +extern void func_8004978C(s16 *a0, void *a1); +extern void func_8012B414(int a0); +extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); +extern s32 func_8012B6D4(s16 *a0, s16 *a1); +extern s32 func_8012B70C(s16 *a0, s16 *a1); +extern s32 ratan2(s32 x, s32 y); +extern s32 func_8012B744(void *a0, void *a1); +extern s16 D_80126CB8; +extern s16 D_80126CB4; +extern s32 func_8012B864(s32 a0); +extern s32 func_8012B8A4(s16 *a0); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern s32 func_8012BA10(s32 arg0, s32 arg1); +extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); +extern void Square0(s32 *a0, s32 *a1); +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern s16 D_80126CBA; +extern s32 func_8012BCCC(s32 a0); +extern void func_80013350(s32 a0, void *a1); +extern u8 D_80126B5C; +extern void func_8012BD14(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); +extern void func_8012BE98(s32 a0, u16 *a1); +extern void func_8012BE54(s32 a0); +extern s32 func_800132BC(s32 a0, s32 a1); +extern void func_8012BE98(s32 arg0, u16 * arg1); +extern s32 func_8012BEE8(s32 a0); +extern s32 func_8012BF10(s32 a0, s32 a1); +extern void func_8012BF4C(s32 *a0, s32 a1); +extern void func_8012BF54(void *a0); +extern void func_8012BF68(void *a0); +extern s16 D_80126CB0; +extern s32 func_8012BF7C(s16 *a0); +extern s16 D_80126CAC; +extern short D_80126CAE; +extern int func_8012BFA8(short *a0); +extern s32 D_801274D4; +extern s32 D_801274E0; +extern s32 func_8012C044(s32 a0); +extern void func_8012C218(void *a0); +extern void func_8012C098(void *param_1); +extern s32 func_8012C0EC(s32 a0); +extern void func_8012C194(void); +extern void func_8001CFDC(s32 a, s32 b); +extern void func_8012C1B8(void); +extern u8 D_800B3DF0[]; +extern s32 func_8012C1DC(s32 a0); +extern u8 D_80126720[]; +extern u16 * func_8012C284(u16 *a0); +extern u8 D_80120194[]; +extern s32 func_8012C2D0(void); +extern s32 func_8012C31C(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern u8 D_80078EAE; +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8001C810(s32 a0, s32 a1); +extern s32 func_8012C438(s32 a0, s32 a1); +extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); +extern s32 func_8012C51C(void *a0, s32 a1); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_8012C724(s32 a0, s32 a1); +extern s32 func_8012C750(s32 a0); +extern s32 func_8012C820(u8 *a0); +extern u16 D_801274E4[]; +extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +extern void func_8012CC88(s32 a, s32 b, s32 c); +extern u8 D_800D3918[]; +extern void func_8012CBA4(s32 a0); +extern void func_8012CBCC(s32 a0); +extern void func_8012CBF4(s32 a0); +extern void func_8012CC1C(s32 arg0, s32 arg1); +extern void func_8012CC40(s32 arg0, s32 arg1); +extern void func_8012CC88(s32 a0, s32 a1, s32 a2); +extern void func_8012CC64(s32 a0, s32 a1); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern s32 func_8012CE2C(s32 a0); +extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); +extern void func_8012CFA8(s32 arg0); +extern void func_8012F214(s32 a0, s32 a1, s32 a2); +extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012D098(u16 *param_1, u32 param_2); +extern void func_8012D098(); +extern void func_8012D38C(int a0); +extern void func_8012D3AC(void); +extern s32 AddPrim(s32, void *); +extern s32 RotTransPers(s32, s32, s32 *, s32 *); +extern void SetLineF2(void *); +extern void *func_80010A08(s32); +extern void func_8004914C(void *); +extern void func_800491AC(void *); +extern s32 D_800A651C; +extern u8 D_800AF648; +extern s16 D_800B9A02; +extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8012D5DC(void); +extern s16 D_80126B98; +extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern int func_8012D664(); +extern void func_8012D624(s32 a0); +extern s32 func_8012D714(s32 param_1, u32 param_2); +extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); +extern void func_8014C978(void); +extern s32 func_8012DB84(void); +extern s32 func_8012DE2C(s32 a0); +extern s32 func_8012DDA4(void); +extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); +extern s16 D_80126B9A; +extern u8 D_801152A8[]; +extern void func_8012DFBC(void); +extern void func_8012DFCC(void); +extern void func_8012E014(void); +extern void func_8012E138(void); +extern void func_8012DFD4(u8 *a0); +extern s32 func_8012E27C(void); +extern void func_8012E284(void); +extern s32 GetTPage(s32, s32, s32, s32); +extern s32 func_8005A600(s32, s32, s32, s32, s32); +extern void func_8012E28C(s32 arg0, s32 arg1); +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern void func_8012E32C(void); +extern s32 func_8012E470(s32 a0); +extern void func_8012E4C8(s32 a0); +extern s32 func_8012E504(s32 a0, s32 a1); +extern s32 func_8012E544(s32 a0); +extern s32 func_8012E57C(s32 a0, s32 a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); +extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); +extern s32 func_8012E778(int param_1, int param_2); +extern void func_8012E88C(u8 *a0); +extern void func_8012E8A8(u8 *a0); +extern void func_8012E8C4(u8 *a0); +extern void func_8012E8E0(s32 a0, s32 a1); +extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); +extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); +extern s32 func_8002A4FC(s32 a0); +extern s32 func_8012EECC(s32 a0); +extern void func_8012EFB8(s32 a0); +extern void func_8012EF34(s32 a0, s32 a1); +extern void func_8012EF70(s32 a0, s32 a1); +extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); +extern void func_8012F038(int param_1, short *param_2, short *param_3); +extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); +extern void RotTransSV(s32 a0, s32 a1, void *a2); +extern void func_8012F14C(s32 a0, s32 a1, s32 a2); +extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); +extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); +extern s16 D_80126CB6; +extern void func_8012F374(s32 a0, s32 a1); +extern void *memcpy(void *, const void *, u32); +extern u8 D_80126C38; +extern u8 D_80126C40; +extern u16 D_80126B94; +extern u16 D_80126B96; +extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); +extern void func_80131B14(); +extern void func_80131E00(struct S80131E00 *a0, s32 a1); +extern s32 func_80131A34(s32, s32); +extern void func_80131CA8(int a0, int a1); +extern void func_8012F5F4(s32 arg0); +extern void func_80131C78(s32 a0); +extern void func_8012F68C(s32 arg0); +extern void func_8012F75C(s32 a0); +extern s32 func_8012BEE8(s32); +extern void func_8012F7B4(s32 a0); +extern void func_80131170(); +extern void func_80131CA8(); +extern void func_8012F828(int param_1); +extern void func_80131340(s32 a0); +extern void func_8012F87C(s32 a0); +extern void func_8012F8C8(int param_1); +extern void func_8012F91C(s32 a0); +extern s32 func_80131A34(s32 a0, s32 a1); +extern void func_80131CA8(s32 a0, s32 a1); +extern void func_8012F968(s32 param_1); +extern void func_801319E0(s32 a0); +extern s32 func_80143B6C(s32 a0, s32 a1); +extern void func_8012FB54(s32 a0); +extern void func_8012FC30(s32 a0); +extern void func_8012FCA4(int a0); +extern void func_80131B14(void); +extern void func_8012FCC4(int param_1); +extern void func_8012FDA8(int param_1); +extern void func_80131170(s32 a0, s32 a1, s32 a2); +extern void func_8012FE70(s32 a0); +extern void func_8012FF00(s32 a0); +extern void func_8012FF4C(s32 a0); +extern void func_80130D48(s32 a0); +extern void func_8012FF98(u8 *a0); +extern s32 func_80131AC8(void *a0); +extern void func_8013001C(void *a0); +extern void func_80130088(void *a0); +extern s32 func_8012BCCC(s32); +extern void func_801300F4(s32 a0); +extern void func_801301E8(u8 *a0); +extern void func_80130278(s32 arg0); +extern void func_80130314(s32 a0); +extern void func_80130360(s32 a0); +extern void func_8012E364(void); +extern void func_801303A0(s32 a0); +extern void func_801303EC(void *a0); +extern void func_80143CD4(s32 a0); +extern void func_800CB0E8(s32 a0); +extern void func_80130438(s32 a0); +extern void func_801319E0(int); +extern int func_80131D68(int, int); +extern int func_8012BEE8(int); +extern void func_80131CA8(int, int); +extern void func_80130514(int param_1); +extern void func_801305CC(u8 *a0); +extern void func_8012CBF4(s32); +extern s32 func_80131D68(s32 a0, s32 a1); +extern void func_80130650(s32 a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_80130740(void *a0, u16 *a1); +extern s32 func_801312D0(s32 a0, void *a1); +extern void func_801307B0(s32 a0); +extern void func_80130858(s32 a0); +extern void func_80130898(u8 *a0); +extern void func_801308DC(s32 a0); +extern void func_80166244(); +extern void func_80130974(int param_1); +extern void func_80130A18(u8 *a0); +extern void func_80130AC4(s32 a0); +extern int func_80131A34(int a0, int a1); +extern void func_80130AF0(int param_1); +extern void func_80130D0C(s32 a0); +extern void func_80131170(s32 p, s32 b, s32 c); +extern s32 func_801312D0(s32 param_1, void *param_2); +extern void func_80131E00(); +extern s32 D_8018F078; +extern s32 D_8018F07C; +extern void func_8002A04C(s32 a0); +extern void func_801319E0(s32 arg0); +extern s32 func_80131CF4(s32 a0); +extern int func_80131D68(int a0, int a1); +extern void func_80131E38(u8 *a0); +extern void func_80131E7C(s32 a0); +extern void func_80131EE4(void); +extern void func_80131EEC(void *a0); +extern void func_80131F28(void *a0); +extern void func_80131F64(void *a0); +extern void func_80131FA0(void *a0); +extern void func_80131FDC(void *a0); +extern void func_801320D0(void); +extern void func_8001C214(int, int); +extern void func_801320D8(int param_1); +extern void func_80132144(int param_1); +extern void func_801321B0(int param_1); +extern void func_8013221C(int param_1); +extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ +extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); +extern void func_80132288(int *param_1, int *param_2, int param_3); +extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_8013240C(s32 a0); +extern void func_8013277C(void); +extern void func_80020F34(s32 a0, s32 a1); +extern void func_80054514(s32 a0, s32 a1); +extern void func_80132784(s32 a0, s32 a1, u32 a2); +extern s32 VectorNormalSS(void *a0, void *a1); +extern void func_80132DC4(s32 a0, s32 a1, s32 a2); +extern s32 func_80132E6C(s16 *a0); +extern void func_80132EC4(void *a0, s16 a1); +extern s32 func_80132EF4(s32 a0, s32 a1); +extern void func_801330E0(s16 *a0, s16 *a1, s32 a2); +extern void func_80133060(u8 *a0, s32 *a1, s32 a2); +extern void func_8013339C(short *param_1, short *param_2); +extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); +extern void func_80136BC4(s32 a0); +extern void func_801336E8(void *a0, int a1, int a2); +extern void func_80136BC4(s32); +extern void func_8013373C(s16 arg0); +extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); +extern s32 func_80133CD4(); +extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); +extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); +extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); +extern s32 func_801345F8(s32 arg); +extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); +extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); +extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); +extern int func_80134A74(int, s16, s16, int); +extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); +extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); +extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); +extern s32 func_801365B8(void *arg0, s32 arg1, s32 arg2); +extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80136C3C(void); +extern void func_80136C1C(void); +extern void func_80136C44(void); +extern void func_80136C4C(void); +extern void func_80136C54(void); +extern void func_80136D00(void); +extern void SetLineG2(void *); +extern void func_80136D08(s32 arg0, s32 arg1); +extern u16 D_80126CC4; +extern M2C_UNK func_800153CC(M2C_UNK, u16, M2C_UNK, M2C_UNK, s32, s32); +extern void func_80136DFC(void); +extern void func_80136EC4(void); +extern short D_800B9A02; +extern u8 D_800A6518[]; +extern void GsSortLine(void *a0, void *a1, s32 a2); +extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); +extern void func_80137030(s16 a0, s16 a1); +extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); +extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); +extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); +extern void func_80137178(s32 x, s32 y); +extern u8 D_800AF630[]; +extern u16 aD800B9A02 __asm__("D_800B9A02"); +extern void func_801372B0(void); +extern void func_80137614(s32 a0, s32 a1, s32 a2); +extern void func_801375EC(s32 a0, s16 a1); +extern s32 func_801399A8(void); +extern void func_801377B4(s32 a0, s32 a1, s32 a2); +extern s32 func_8013767C(s32 a0); +extern void func_801376E8(int a0, int a1); +extern void func_801376C8(int a0); +extern s32 D_80127524; +extern s32 D_80127528; +extern void func_80137840(s32 a0); +extern void func_80139634(void *); +extern void func_80139DC8(void); +extern s16 D_8012752E; +extern void func_801379D8(void); +extern void func_801379EC(void); +extern void func_80138BE0(s32 a0); +extern void func_80137BD8(s32 a0); +extern void func_8013A380(void); +extern void func_801379FC(void); +extern void func_80138BE0(int p); +extern void func_80137B80(void); +extern void func_801392FC(); +extern void func_801397B0(s32 a0); +extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); +extern void func_80139680(s32 a0, u8 *a1); +extern u16 D_800B99D8; +extern int func_80137D08(int arg0, int arg1, short arg2); +extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80137DD4(s32 ent, u8 *arg, u8 *work); +extern void func_801387B8(s32 arg0); +extern void func_80138948(void *a0); +extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); +extern void func_80138B88(s32 a0); +extern void func_8013895C(s32 a0); +extern s16 D_80127540[4]; +extern s32 func_80139D04(s32 a0, s32 a1); +extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); +extern void func_80139B18(s32 a0); +extern void func_80138AB4(s32 a0); +extern void func_80138C30(void *a0); +extern void func_8013A9F8(s32 a0, s32 a1); +extern void func_80138D58(s32 a0, u16 a1); +extern s32 func_80014E80(s32 a0, s32 a1); +extern s32 func_8013914C(s32 a0, s32 a1); +extern void func_800599B8(u16 *); +extern u16 D_80127C0C[]; +extern s32 D_80127548[]; +extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); +extern s32 func_80139220(s32 a0); +extern void func_801391F0(void *a0); +extern void func_801392C8(void *a0); +extern void func_801395D4(void *); +extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80052460(s32 a0, s32 a1, s32 a2); +extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); +extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); +extern void func_80139634(void *a0); +extern void func_80139680(s32 arg0, u8 * arg1); +extern void func_8001931C(void); +extern s16 D_8012752C; +extern void func_80139788(void); +extern void GsSortSprite(void *a0, u8 *a1, s32 a2); +extern void func_801397B0(s32 arg0); +extern void func_8013A8B0(s32 *a0); +extern void func_80139914(s32 arg0); +extern u16 D_80126A08; +extern s16 D_801269F4; +extern s32 D_801269F0; +extern s32 *D_80126A30; +extern void func_80139954(void); +extern s32 D_80126A3C; +extern s32 func_801399F0(s32 a0); +extern s32 D_80127520; +extern void func_80139A34(s32 a0); +extern s32 D_80127530[4]; +extern void func_80139A44(s32 a0, u16 a1); +extern void func_80139A68(s32 a0, u16 a1); +extern void func_80139A8C(s32 a0); +extern void func_80139C7C(u8 *a0); +extern s16 D_8012811A; +extern void func_80139DEC(void); +extern void func_80139DF4(s32 a0); +extern void func_80139E84(s32 a0); +extern void func_80139F0C(s32 a0); +extern void func_80139FBC(struct obj *a0); +extern s32 func_8001B22C(void *a0); +extern void func_80139FE8(void *a0); +extern void func_8013A0A4(struct S8013A0A4 *a0); +extern void func_8013A164(struct S8013A164 *a0); +extern void func_8013A1E8(s32 a0); +extern void func_8013A250(struct S8013A250 *a0); +extern void func_8013A2BC(s32 a0); +extern void func_8013A378(void); +extern u8 D_8011DA80[]; +extern void func_8013A530(); +extern void func_8013A448(void *a0); +extern void func_8013A4C4(struct S8013A4C4 *a0); +extern void func_80015D4C(); +extern void func_80015F04(); +extern void func_8013AA24(s32 a0, s32 a1); +extern void func_8013A530(int param_1); +extern void func_8013A860(void); +extern s32 func_8013A8BC(void); +extern void func_8013A9B4(s32 a0, s32 a1); +extern s32 func_8013A8FC(s32 arg0); +extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); +extern void func_8013B204(s32 a0, s32 a1); +extern void func_8013AF20(); +extern void func_8013B274(s32 a0, s32 a1, void *a2); +extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); +extern void func_80019064(void *a0); +extern void func_8013C9C4(void * arg0); +extern void func_8013CA14(void); +extern void func_8013CABC(void); +extern void func_8013CAE8(void); +extern void func_8013CB20(void); +extern void func_8013CB5C(void); +extern void func_8013CF68(); +extern void func_8013D9B0(); +extern void func_8013D064(void); +extern s32 func_8013D13C(void); +extern void func_8013D164(void); +extern void func_8013D178(void); +extern void func_8013D330(void); +extern void func_8013D53C(void); +extern void func_8013DD68(void); +extern void func_8013D8FC(void); +extern void func_8013CF68(void); +extern void func_8013D3D4(int param_1, int param_2); +extern void func_8013DBE4(int param_1); +extern s32 func_8013E054(void); +extern int SquareRoot12(int a0); +extern int func_8013E064(s16 *a0, s16 *a1); +extern int func_8013E0FC(s16 *a0, s16 *a1); +extern int func_8013E194(s16 *a0, s16 *a1); +extern void Square12(s32 *a0, s32 *a1); +extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); +extern s32 func_8013E298(s16 *a0); +extern int func_8013E2C4(short *a0); +extern void *D_801274CC; +extern s32 func_8013E410(void); +extern s32 func_8013E448(s32 a0); +extern void func_8013E370(void); +extern s32 (*D_801274D0)(s32); +extern s32 D_801274D8; +extern s32 D_801274DC; +extern s32 func_8013E448(s32 param_1); +extern void func_800D24A0(s32 a0); +extern void func_80141788(void); +extern void *D_8011DB24; +extern s32 func_800D0EC4(void); +extern void func_80141874(void); +extern u8 D_800B9A15; +extern unsigned char D_800B9A13; +extern u16 D_80115110; +extern unsigned short D_80115112; +extern void func_8013E588(void * _arg0); +extern void func_801754A8(void); +extern s32 func_80014ED4(s32); +extern s32 func_80015018(s32); +extern void func_800190AC(void); +extern void func_80141C04(void); +extern void func_8013E5E8(void); +extern void func_8013E83C(void); +extern void func_8013E6AC(void); +extern void func_800D24A0(s32 arg); +extern void func_8013E814(void); +extern void func_8013E83C(); +extern void func_8013E958(); +extern s32 func_80141C50(void); +extern void func_8013F244(void); +extern void func_8013FAF8(s16 a0, s16 a1); +extern void func_8013E958(void); +extern u8 D_801151C8[]; +extern s32 D_801151D0; +extern u16 D_8011511A; +extern u16 D_8011511E; +extern s32 D_80115130; +extern s16 D_8011514C; +extern void func_8013EA54(void); +extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ +extern s16 func_8014168C(s16 a0); +extern s32 func_8014032C(s32 a0, s32 a1); +extern unsigned char *func_80141CA4(void); +extern void func_8013EB7C(void); +extern s32 func_8013F350(void); /* §30#2 widened (discarding caller) */ +extern u16 D_80115112; +extern void func_8013ED6C(void); +extern s32 func_8013EE10(); +extern void func_8013F138(void); +extern void func_800D2624(void); +extern unsigned short D_80115114; +extern unsigned short D_80115118; +extern void func_8013F1BC(void); +extern void func_80141C0C(s32); +extern u16 D_8011511C; +extern u16 D_80115120; +extern u16 D_80115122; +extern s16 D_80115128; +extern s16 D_8011512A; +extern u16 D_8011512E; +extern u8 D_80115140[]; +extern s16 D_8011514E; +extern u8 D_80115152; +extern u8 D_80115158[]; /* macro-canonical (§8e) */ +extern u8 D_8011515C; /* macro-canonical (§8e) */ +extern u8 D_8017F71C[]; +extern u8 D_8017F734[]; +extern u16 D_8017F638[]; +extern s32 func_80029178(s32 arg); +extern s32 func_800291B4(s32 arg); +extern void func_8014AA04(s32 a0); +extern void func_801415C0(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); +extern s32 func_80140608(s32 a0); +extern void func_801407F4(void); +extern s32 func_801416D4(s16); /* macro-canonical (§8e) */ +extern s32 func_8013F350(void); +extern void func_80140E6C(void); +extern void func_80140F00(void); +extern s32 *func_80140958(s32 *, s32, s32); +extern int func_80141100(int); +extern s16 func_8014168C(s16); +extern s32 func_8013FFD8(s16, s32, s32 *); +extern void func_80024054(void *a0, void *a1); +extern s32 *func_800D2650(s32 *, void *, s32, s32, s32, s32); +extern s32 func_800D27DC(s32, s32 *, void *, s32, s32); +extern s32 *func_800D29F8(s32, s32, void *, s32, s32); +extern void func_8013FAF8(s16 arg0, s16 arg1); +extern s32 func_80028D58(void); +extern s32 func_80028DE0(void); +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern int func_800D2CA8(int, int); +extern void func_800D2D10(int, int, void *, int); +extern int func_80029FE4(void); +extern char *func_8002AAB4(void); +extern char *strcpy(char *, const char *); +extern int func_8002A26C(void); +extern int func_8002A2B0(void); +extern int func_8002A4B8(void); +extern int func_8002A998(void); +extern int func_8002A9DC(void); +extern int func_8002A728(void); +extern int func_8002A76C(void); +extern int func_80029FD4(void); +extern s32 func_8002A1B4(void); +extern short func_8002A28C(void); +extern short func_8002A27C(void); +extern s32 func_8002A400(void); +extern short func_8002A4D8(void); +extern short func_8002A4C8(void); +extern s32 func_8002A8E0(void); +extern short func_8002A9B8(void); +extern short func_8002A9A8(void); +extern s32 func_8002A670(void); +extern short func_8002A748(void); +extern short func_8002A738(void); +extern int func_801412A8(int, int, int, int, int, int); +extern int func_80141100(int param_1); +extern void func_800291A0(s32, s32); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_801415C0(s32 param_1, s32 param_2); +extern u8 D_80115148[]; +extern u8 D_80115149[]; +extern u8 D_80115158[]; +extern u8 D_8011514D; +extern u8 D_8011515C; +extern s32 func_800D11F0(s32 a0); +extern s32 func_800D1658(s32 a0); +extern s32 func_801416D4(s16 param_1); +extern void func_8001903C(void); +extern void func_801417C4(void); +extern u8 D_800B9A16; +extern u16 D_80115114; +extern void func_801417F8(void); +extern volatile u16 D_8011511A; +extern u16 D_8011512E; /* §17a-1: canonical width (jr_8013F350 TUs decl u16); byte-neutral here (only use is store-0) */ +extern s32 func_80029178(s32 a0); +extern void func_801418F8(void); +extern void func_80141A60(void); +extern void func_80141C0C(s32 param_1); +extern s32 func_80015144(void); +extern unsigned char D_80112C04[]; +extern unsigned char D_80112C50[]; +extern unsigned char D_80112C9C[]; +extern unsigned char D_80112CE8[]; +extern unsigned char D_80112D38[]; +extern unsigned char D_80112D78[]; +extern unsigned char D_80112DBC[]; +extern unsigned char D_80112DF4[]; +extern unsigned char D_80112E14[]; +extern unsigned char D_80112E40[]; +extern unsigned char D_80112E6C[]; +extern unsigned char D_80112EBC[]; +extern unsigned char D_80112F0C[]; +extern unsigned char D_80112F48[]; +extern unsigned char D_80112F9C[]; +extern unsigned char D_80112FDC[]; +extern unsigned char D_8011302C[]; +extern unsigned char D_80113074[]; +extern unsigned char D_801130B8[]; +extern unsigned char D_801130E8[]; +extern unsigned char D_80113138[]; +extern unsigned char D_8011317C[]; +extern unsigned char D_801131A8[]; +extern unsigned char D_801131E8[]; +extern unsigned char D_80113214[]; +extern unsigned char D_80113254[]; +extern unsigned char D_80113278[]; +extern unsigned char D_801132B8[]; +extern unsigned char D_801132E4[]; +extern unsigned char D_80113324[]; +extern unsigned char D_80113360[]; +extern unsigned char D_801133A4[]; +extern unsigned char D_801133F4[]; +extern unsigned char D_80113440[]; +extern unsigned char D_80113474[]; +extern unsigned char D_801134B0[]; +extern unsigned char D_801134FC[]; +extern unsigned char D_80113530[]; +extern unsigned char D_80113554[]; +extern unsigned char D_801135A8[]; +extern unsigned char D_80113600[]; +extern unsigned char D_80113650[]; +extern unsigned char D_80113694[]; +extern unsigned char D_801136DC[]; +extern unsigned char D_80113724[]; +extern unsigned char D_80113744[]; +extern unsigned char D_80113770[]; +extern unsigned char D_80113794[]; +extern unsigned char D_801137D8[]; +extern unsigned char D_8011381C[]; +extern unsigned char D_8011383C[]; +extern unsigned char D_8011386C[]; +extern unsigned char D_801138A4[]; +extern unsigned char D_801138D0[]; +extern unsigned char D_80113900[]; +extern unsigned char D_80113944[]; +extern unsigned char D_80113964[]; +extern unsigned char D_8011399C[]; +extern unsigned char D_801139E8[]; +extern unsigned char D_80113A28[]; +extern unsigned char D_80113A50[]; +extern unsigned char D_80113A84[]; +extern unsigned char D_80113AB0[]; +extern unsigned char D_80113AE0[]; +extern unsigned char D_80113B34[]; +extern unsigned char D_80113B68[]; +extern unsigned char D_80113BA4[]; +extern unsigned char D_80113BC0[]; +extern unsigned char D_80113BF0[]; +extern unsigned char D_80113C20[]; +extern unsigned char D_80113C3C[]; +extern unsigned char D_80113C7C[]; +extern unsigned char * func_80141CA4(void); +extern void func_80142414(s32 a0, s16 a1); +extern void func_80142454(s32 a0); +extern void func_801424E4(short *param_1); +extern void func_801425CC(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern s32 func_8012AD50(void *a0); +extern void func_80142608(s32 param_1); +extern void func_801426D4(s32 a0); +extern void func_80142740(int param_1); +extern void func_80142778(u8 *a1); +extern void func_801427DC(void); +extern void func_801427E4(void); +extern void func_801427EC(int param_1); +extern s32 func_80142DB8(s32 *a0); +extern s32 func_80142D38(s32 *a0); +extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); +extern void func_801428CC(s32 *a0); +extern void func_8014292C(int param_1); +extern void func_80142978(int param_1); +extern void func_801429C4(int param_1); +extern void func_80142A80(void); +extern void func_80142C7C(void); +extern void func_80142C84(s32 a0); +extern void func_80142C9C(s32 * arg0); +extern void func_80142B2C(void *arg0); +extern void func_80142DC4(int param_1); +extern void func_80142E38(int param_1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_80142EC0(s32 param_1); +extern void func_80142FFC(s32 *a0); +extern void func_8014305C(int param_1); +extern void func_80143188(s32 *a0); +extern int func_8001CA88(int, void *); +extern void func_800233CC(void *, unsigned short); +extern void func_801431E8(s32 param_1); +extern void func_80142C9C(s32 *a0); +extern void func_801432FC(s32 *a0); +extern void func_80143390(s32 *a0); +extern void func_80143458(s32 param_1); +extern void func_8014358C(s32 param_1); +extern s32 rand(void); +extern void func_80143640(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80143970(s32 a0); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_80143994(s32 a0, s32 a1); +extern void func_801439C0(u8 *a0); +extern s16 D_801152AC; +extern s16 D_801152AA; +extern void func_801439FC(s32 a0); +extern void func_80143B30(void *a0); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80143B6C(s32 arg0, s32 arg1); +extern void func_80143BDC(u16 *a0); +extern void func_80143C38(void *a0); +extern void func_80143C74(s32 a0, s32 a1); +extern void func_80143C98(void *a0); +extern void func_80143E68(void *a0); +extern void func_80143EA4(void); +extern void func_80143EAC(void); +extern void func_80143EB4(void); +extern s32 func_8004787C(s32 a0); +extern void func_80143EBC(s32 a0); +extern void func_80144054(void *a0); +extern void func_801442F8(int param_1); +extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80144364(int param_1); +extern u8 D_800D387C[]; +extern u8 D_800D3888[]; +extern void func_80144558(u8 *param_1); +extern void func_801446A4(int param_1); +extern void func_8014477C(void *param_1); +extern void func_80144880(s32 param_1); +extern void func_80144988(s32 a0); +extern void func_801449C8(void *a0); +extern void func_80144A04(s32 *a0); +extern void func_80144A2C(void *a0); +extern void func_80144A68(s32 *a0); +extern void func_80144A90(void); +extern void func_80144A98(u8 *a0); +extern void func_80144B14(void); +extern void func_80144AEC(s32 *a0); +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern void func_80145B24(void); +extern void func_80145934(void); +extern void func_80145A2C(void); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_80078EC0; +extern void func_80145BF8(void); +extern void func_80145C54(void); +extern void func_80146014(s32 a0); +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(void); +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C3C(u8 *a0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern volatile s32 D_80127090; +extern volatile s32 D_80127094; +extern volatile s32 D_80127098; +extern void func_80147F78(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80148038(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148D44(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 func_80149FB0(s32 a0); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8014A1B0(s32 a0, s32 a1); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern u8 D_80078E78[]; +extern s32 func_8016F1C4(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_8014BD60(s32 a0, s32 a1); +extern void func_8014B084(void); +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern s32 D_80078E98; +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 a0, s32 a1, void* a2); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern struct Packed8 D_80126C98; +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern void func_8014CF04(s32 a0, void *a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D2A0(s32 a0, void *a1, void *a2); +extern void func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern void func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern void func_8014D820(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern void func_8014DF94(s32 arg0); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); /* canonical (engine_core.h:11555) */ +extern s32 func_8014E284(s32 a0, s16 *arg1, s16 *arg2); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E48C(s32 a0); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014ED80(struct SubED80 *a0); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014F4C0(u8 *a0); +extern void func_8014F468(void); +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern void func_8014FA04(s32 a0); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern s32 func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_801502EC(s32 e, void *a1, void *a2); +extern s32 func_80150460(s32 e, s32 a1); +extern s32 func_80150170(void *e); +extern s32 func_80150460(s32 a, s32 b); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern void func_801504D8(u16 *a0); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B28(int param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern void func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void func_80152C80(s32* a0); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern u8 D_80062C04[]; +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154B4C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154F9C(s32 a0); +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern S801563EC *func_801563EC(u16 idx); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern S801563EC * func_801563EC(u16 idx); +extern s32 func_801564B0(s32 a0); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(void *a0); +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +extern S8 D_80126AF0[]; +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern s32 func_80135260(s32 a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void func_8014CC28(s32 a0); /* defined */ +extern void func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_80157808(s32 a0); +extern void func_801577C8(int param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +/* ==== end §8b carried decl layer ==== */ + + + +extern int func_800D0CA0(int); +extern int func_8001AAA0(int); +extern int SsGetMute(void); +extern s32 func_80159464(void); + +void func_801588CC(int param_1) { + + extern void (*D_80180A20[])(void); + extern int D_8018F228; + extern int D_8018F22C; + extern int D_8018F230; + extern int D_8018F234; + extern int D_8018F238; + short sVar1; + + D_80180A20[*(unsigned short *)(param_1 + 2)](); + switch (D_8018F228) { + case 0: + break; + case 1: + func_800D0CA0(2); + D_8018F230 = 0; + D_8018F22C = 0x46; + D_8018F228 += 1; + break; + case 2: + if (D_8018F22C == 0) { + if (SsGetMute() == 0) { + D_8018F228 += 1; + } + } else { + D_8018F22C -= 1; + } + break; + case 3: + if (func_8001AAA0(0x83) != 0) { + D_8018F228 += 1; + } + break; + case 4: + D_8018F234 = 0; + sVar1 = ((int (*)(int))func_80159464)(param_1); + if (sVar1 != 0) { + D_8018F22C = 0xd2; + } else { + D_8018F22C = 1; + } + break; + case 5: + D_8018F22C -= 1; + if (D_8018F22C == -1 || D_8018F238 != 0) { + D_8018F22C = 0; + D_8018F228 += 1; + } + break; + case 6: + func_800D0CA0(1); + D_8018F22C = 0x28; + D_8018F228 += 1; + break; + case 7: + if (D_8018F22C == 0) { + if (SsGetMute() == 0) { + D_8018F228 += 1; + } + } else { + D_8018F22C -= 1; + } + break; + case 8: + D_8018F230 = 1; + break; + } +} + + +DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158ab4 (src/shared) */ + + +DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158ae4 (src/shared) */ + + + +extern void func_80146CA0(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void func_80147324(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); + +void func_80158BB0(void *arg0) { + + extern M2C_UNK D_800D58D8; + extern s32 D_8018F228; + if (D_8018F228 == 0) { + D_8018F228 = 1; + } + func_80147324(0x456); + func_80154274(arg0, &D_800D58D8); + func_80154A74(arg0, 0x16); + M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; + M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; + func_801474EC(arg0); + func_801474D8(arg0); + func_801472C8(arg0); + func_80146CA0(arg0); +} + + +DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158c40 (src/shared) */ + + +DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158cd8 (src/shared) */ + + +DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158d60 (src/shared) */ + + +DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158e24 (src/shared) */ + + + +// @class: other +// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) + + +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158F00(int param_1) { + + extern s32 D_8018F234; + extern s32 D_801809F0[]; + int *self = (int *)param_1; + struct Actor *act = (struct Actor *)self[0x20 / 4]; + int gate = D_8018F234; + + act->timer = (u16)((act->timer + 0x16) & 0xfff); + + if (gate == 0) { + s32 r = rand(); + *(s32 *)(param_1 + 0x198) = func_8013767C(D_801809F0[r % 0xb]); + ((void (*)(int))func_80146CA0)(param_1); + } +} + + + +// @class: plumbing +// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 +// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used +// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz +// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); +// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. + + +extern u16 func_80148800(s32 *a0); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80146C98(s32 *a0, s16 a1); +extern s32 func_8013767C(s32 a0); +extern void func_80146CA0(void *a0); + +void func_80158FA4(s32 param_1) +{ + + extern s32 D_8018F238; + extern u8 D_80110C3C[]; + s32 v0; + s16 sVar1; + + v0 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; + if (((s32 (*)(void))func_80148800)() & 0xf0) { + D_8018F238 = 1; + } + if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { + func_80139914(*(s32 *)(param_1 + 0x198)); + *(s32 *)(param_1 + 0x198) = 0; + sVar1 = ((s32 (*)(s32))func_80159464)(param_1); + if (sVar1 != 0) { + func_801594E8(param_1, sVar1); + ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); + } else { + *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); + ((void (*)(s32))func_80146CA0)(param_1); + } + } +} + + +DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ + + +DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ + + +DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592cc (src/shared) */ + + + +extern void func_80145BF8(void); +extern void func_80146CA0(void *a0); + +void func_8015934C(void *arg0) { + + extern u8 D_800AE6BD; + extern s32 D_8018F228; + extern s32 D_8018F230; + void *temp_v1; + + if (D_8018F228 == 4) { + D_8018F228 = 5; + } + if (D_8018F230 != 0) { + func_80145BF8(); + func_80146CA0(arg0); + D_800AE6BD += 1; + } + temp_v1 = M2C_FIELD(arg0, void **, 0x20); + M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); +} + + +DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593e4 (src/shared) */ + + +DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ + + +DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ + + + +extern s16 currentLocationId; +extern s32 func_80029A94(s32); + + +s32 func_80159464(void) { + + extern Entry D_80180A58[]; + Entry *e; + + e = D_80180A58; + while (e->id != 0) { + if (currentLocationId == e->id) { + return e->val; + } + e++; + } + if (func_80029A94(1) != 0) { + goto ret0; + } + if (func_80029A94(0) != 0) { + goto ret0; + } + return -1; +ret0: + return 0; +} + + +INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_801588CC", func_801594E8); + + + +void func_80159698(void *a0) { + + extern void (*D_80180C6C[])(void); + D_80180C6C[*(u8 *)((s32)a0 + 0x15)](); +} + + +DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596d4 (src/shared) */ + + + +// @class: iv-combine +// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; +// p gcc emits the +// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a +// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual +// guarded do-while `if(base+0x2A8= ab + 0x22) { + *q |= orc; + } + q += 0x21; + } while (q < (u32 *)(base + 0x65AC)); + } + + (*(s16 *)&D_801270C0) = 3; + ((void (*)(s32))func_80129248)(0); + func_8013C938(); + func_8013CB20(); + func_8013C98C(); + func_8002850C(0x800, 0x800, 0x800); + func_80028620(0, &(*(u8 *)&D_80180A8C)); + func_80028620(1, &(*(u8 *)&D_80180A8C) + 0x10); + func_80028620(2, &(*(u8 *)&D_80180A8C) + 0x20); + *(s32 *)(param_1 + 0x28) = 0xff; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + } + return 0; +} + + +DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ + + +DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987c (src/shared) */ + + +DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598bc (src/shared) */ + + +DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598e0 (src/shared) */ + + + + +void func_80159968(void *a0) { + + extern void (*D_80180D10[])(void); + D_80180D10[*(u8 *)((s32)a0 + 0x4D)](); +} + + +INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_801588CC", func_801599A4); + +DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599e0 (src/shared) */ + + +void func_80159A18(void) { +} + +INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_801588CC", func_80159A20); + +DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159b08 (src/shared) */ + + +DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159b3c (src/shared) */ + + + + +void func_80159B70(void *a0) { + + extern void (*D_80180E64[])(void); + D_80180E64[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159bac (src/shared) */ + + + +// @class: schedule +// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a +// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm +// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch +// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80172590(u8 *a0); +extern void func_80146CA0(void *a0); + + +void func_80159BE4(s32 arg0) +{ + + extern unsigned char D_80180C80; + int v; + + ((void (*)(int, void *))func_80146DB8)(arg0, &D_80180C80); + if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { + func_80154150(arg0, 5); + func_80154A74(arg0, 0x1C); + } else { + func_80154150(arg0, 4); + func_80154A74(arg0, 0x11); + } + *(int *)(arg0 + 0x234) = 0; + *(int *)(arg0 + 0x238) = 0; + func_801553C0(arg0); + ((void (*)(int))func_801553A8)(arg0); + ((void (*)(int))func_80172590)(arg0); + ((void (*)(int))func_80146CA0)(arg0); +} + + +INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_801588CC", func_80159C84); + +DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015a1c8 (src/shared) */ + + +DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */ + + +DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */ + + + + +void func_8015A264(void *a0) { + + extern void (*D_80180E6C[])(void); + D_80180E6C[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */ + + + +// @class: other +// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay + + +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern void func_801553A8(s32 *a0); +extern s32 func_80172608(u8 *a0); +extern void func_80146CA0(void *a0); + +void func_8015A2D8(s32 param_1) +{ + + extern int D_80180C90; + unsigned char bVar1; + + ((void (*)(int, int *))func_80146DB8)(param_1, &D_80180C90); + if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) { + func_80154150(param_1, 10); + func_80154A74(param_1, 0x1c); + *(int *)(param_1 + 0x2c) = 0xfffc0000; + goto LAB_8015a38c; + } + bVar1 = *(unsigned char *)(param_1 + 0xa9); + switch (bVar1) { + case 0x41: + func_80154150(param_1, 7); + break; + case 0x53: + case 0x73: + func_80154150(param_1, 6); + break; + default: + *(int *)(param_1 + 0x23c) = 0; + goto LAB_8015a390; + } + func_80154A74(param_1, 0x21); +LAB_8015a38c: + *(int *)(param_1 + 0x23c) = 0; +LAB_8015a390: + func_8014C010(param_1, 2); + ((void (*)(int))func_801553A8)(param_1); + ((void (*)(int))func_80172608)(param_1); + ((void (*)(int))func_80146CA0)(param_1); + return; +} + + +INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_801588CC", func_8015A3C8); + +DEFINE_func_8015AB7C() /* dedup: shared engine-core @0x8015ab7c (src/shared) */ + + +DEFINE_func_8015ABD4() /* dedup: shared engine-core @0x8015abd4 (src/shared) */ + + + +// @class: plumbing +// @stuck: none — MATCH (param held in $s0 across 3 calls; lhu 0x16E; &D_80180CB0 arg) +extern void func_80154150(s32 a0, s32 a1); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern s32 func_80161CD0(s32 a0, s32 a1); + +void func_8015AC48(s32 arg0) +{ + + extern M2C_UNK D_80180CB0; + func_80154150(arg0, 9); + func_80146DB8((s32 *)arg0, &D_80180CB0); + func_80161CD0(arg0, M2C_FIELD(arg0, u16 *, 0x16E)); +} + + +DEFINE_func_8015AC90() /* dedup: shared engine-core @0x8015ac90 (src/shared) */ + + +DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015acc4 (src/shared) */ + + +DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015ad08 (src/shared) */ + + + + +void func_8015AD3C(void *a0) { + + extern void (*D_80180E74[])(void); + D_80180E74[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015ad78 (src/shared) */ + + +DEFINE_func_8015ADB0() /* dedup: shared engine-core @0x8015adb0 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_801588CC", func_8015AE2C); + +DEFINE_func_8015B6F4() /* dedup: shared engine-core @0x8015b6f4 (src/shared) */ + + +DEFINE_func_8015B7B4() /* dedup: shared engine-core @0x8015b7b4 (src/shared) */ + + +DEFINE_func_8015B858() /* dedup: shared engine-core @0x8015b858 (src/shared) */ + + +DEFINE_func_8015B8F8() /* dedup: shared engine-core @0x8015b8f8 (src/shared) */ + + +INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_801588CC", func_8015B950); + +DEFINE_func_8015BD8C() /* dedup: shared engine-core @0x8015bd8c (src/shared) */ + + +DEFINE_func_8015BDD0() /* dedup: shared engine-core @0x8015bdd0 (src/shared) */ + + +DEFINE_func_8015BE04() /* dedup: shared engine-core @0x8015be04 (src/shared) */ + + + + +void func_8015BE38(struct Obj *a0) { + + extern void (*D_80180E90[])(void); + D_80180E90[*(u16 *)((s32)a0 + 0x2)](); +} + + +DEFINE_func_8015BE74() /* dedup: shared engine-core @0x8015be74 (src/shared) */ + + +DEFINE_func_8015BE94() /* dedup: shared engine-core @0x8015be94 (src/shared) */ + + +DEFINE_func_8015BEC4() /* dedup: shared engine-core @0x8015bec4 (src/shared) */ + + +DEFINE_func_8015BEE4() /* dedup: shared engine-core @0x8015bee4 (src/shared) */ + + +DEFINE_func_8015BF04() /* dedup: shared engine-core @0x8015bf04 (src/shared) */ + + +DEFINE_func_8015BF48() /* dedup: shared engine-core @0x8015bf48 (src/shared) */ + + +DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015bf7c (src/shared) */ + + +DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015bfb0 (src/shared) */ + + + + +void func_8015BFF4(void *a0) { + + extern void (*D_80180E9C[])(void); + D_80180E9C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_801588CC", func_8015C030); + +DEFINE_func_8015C08C() /* dedup: shared engine-core @0x8015c08c (src/shared) */ + + +DEFINE_func_8015C0C4() /* dedup: shared engine-core @0x8015c0c4 (src/shared) */ + + +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern void func_80146CA0(void *a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147324(s32 a0); +extern void func_801473EC(s32 *a0); +extern void func_80147A84(s32 arg0); +extern int func_80148AFC(void *a0); +extern s32 func_80149FB0(s32 a0); +extern void func_8014C010(s32 a0, s32 a1); +extern void func_8014CC28(s32 a0); +extern void func_8014D738(void); +extern void func_8014F3E8(s32 a0); +extern s32 func_8015BE94(); +extern void func_8015C0C4(s32 a0); + + + +s32 func_8015C128(s32 param_1) { + + extern u16 D_800B99DA; + extern void func_8015C6E0(int); + extern void (*D_80180D1C[])(int); + + int sp10[3]; + int sp20[3]; + int temp_s0; + int temp_v0; + + ((void(*)())func_80149FB0)(); + if (((int(*)(int))func_80148AFC)(((int)param_1)) & 0xFF) { + sp10[0] = 0; + sp10[1] = 0; + sp10[2] = -0x4000; + ((void(*)(int, int *, int *))func_8001382C)(*(short *)(*(int *)(((int)param_1) + 0x20) + 0x12), sp10, sp20); + *(int *)(((int)param_1) + 0x234) += sp20[0]; + *(int *)(((int)param_1) + 0x238) += sp20[1]; + *(int *)(((int)param_1) + 0x23C) += sp20[2]; + } + ((void(*)(int, int *, int *))func_8001382C)((short)(-*(unsigned short *)(*(int *)(((int)param_1) + 0x20) + 0x12)), + (int *)(((int)param_1) + 0x234), sp20); + ((void(*)(int, int *))func_80146DB8)(((int)param_1), sp20); + func_80147A84(((int)param_1)); + ((void(*)(int))func_801473EC)(((int)param_1)); + if (!(D_800B99DA & 3)) { + ((void(*)(int, int))func_8014C010)(((int)param_1), 1); + ((void(*)(int))func_80147324)(0x65F); + } + if (((int(*)(int))func_8014D738)(((int)param_1)) != 0) { + D_80180D1C[*(u16 *)((int)param_1)](((int)param_1)); + func_8015C6E0(((int)param_1)); + return; + } + temp_s0 = ((int(*)(int))func_8014CC28)(((int)param_1)); + temp_v0 = ((int(*)(int))func_8014F3E8)(((int)param_1)); + if (temp_v0 != 0) { + if ((temp_v0 & 0xFF00) != 0x4000) { + ((void(*)(int, int))func_80146E90)(((int)param_1), 6); + ((void(*)(int))func_80146CA0)(((int)param_1)); + return; + } + if ((temp_v0 & 0x4000) && ((int(*)(int))func_80146E98)(((int)param_1)) != 0) { + ((void(*)(int, int))func_80147078)(((int)param_1), 4); + ((void(*)(int))func_8015C0C4)(((int)param_1)); + } + } else if (temp_s0 == 0) { + D_80180D1C[*(u16 *)((int)param_1)](((int)param_1)); + ((void(*)(int, int))func_80147078)(((int)param_1), 3); + ((void(*)(int))func_8015BE94)(((int)param_1)); + } +} + +